算法题(八)--相同的树
2021/12/26 12:07:11
本文主要是介绍算法题(八)--相同的树,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
解法一、广度优先
思路:每棵树维护一个栈,栈里面用来记录没一层节点的值,如果没一层节点的值相同,则代表是结构和值都相同,如果不符合就代表不是相同的树,直接跳出循环。
代码:
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution(object): def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ def find_level_vale(list_node): temp = [];temp_node = [] for item in list_node: if item != None: temp.append(item.val) temp_node.append(item.left) temp_node.append(item.right) else: temp.append("none") return temp,temp_node stack_1 = [];stack_2 = [] stack_1.append(p);stack_2.append(q) while stack_1: temp1,temp1_node = find_level_vale(stack_1) temp2,temp2_node = find_level_vale(stack_2) if temp1 != temp2: return False stack_1 = temp1_node stack_2 = temp2_node return True
解法二、深度优先
思路:维护一个栈,判断栈中每个节点的最深树结构和值是否相同,如果不同就结束判断。前序、中序、后序遍历都是深度优先算法的一种,因此可以选择一种作为实现方案。
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution(object): def isSameTree(self, p, q): """ :type p: TreeNode :type q: TreeNode :rtype: bool """ if p == None and q == None: return True else: return False def inner_left(node,stack): while node.left != None: stack.append(node.left) stack1 = [];stack2 = [] stack1.append(p);stack2.append(q) inner_left(p,stack1);inner_left(q,stack2) while stack1: temp1 = stack1.pop() temp2 = stack2.pop() if temp1.val != temp2.val: return False if temp1.right != None: inner_left(temp1.right,stack1) if temp2.right != None: inner_left(temp2.right,stack2) return True
这篇关于算法题(八)--相同的树的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API