开荒新系列之LeetCode: 004-Same Tree
2015-12-28 00:26
357 查看
开荒新系列之LeetCode: NO.004 Same Tree
在广图,连刷两道题好了。题目大意
比较两个二叉树的异同,只有结构完全相同,且对应结点的值也相同的二叉树,才是完全一致的。基本思路
啊,我的DFS和BFS,你们又要出现啦。到底用哪种呢?
感觉更偏好于DFS一些。因为大部分二叉树在构造的时候都会偏向于平衡结构,因而BFS在抵达较深层次的时候,会使其任务队列过于庞大(最多需要2^h的大小,h为深度),对于平衡二叉树,DFS仅需要约2*h的大小的栈容量,当然如果是单边的二叉树,那为什么不用链表呢。
我的解法
写离线测试好麻烦,得想一想怎么构思一个离线测试集了# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def dfs(self, root): stack = [root] while stack != []: node_now = stack.pop() yield node_now # 采用右子树探寻 if node_now.left != None: stack.append(node_now.left) if node_now.right!= None: stack.append(node_now.right) def xor(self, a, b): if a and b != None: return (a or b) and (not a and not b) if a == None and b == None: return False return True def check(self,a, b): if (a.val == b.val) and (self.xor(a.left, b.left) == False) and (self.xor(a.right, b.right) == False): return True return False def isSameTree(self, p, q): # 对空树处理 if (p and q)== None: if (p or q) != None: return False return True gtr_p = self.dfs(p) gtr_q = self.dfs(q) result = True # 比较长度一致部分的结果 try: while 1: node_now_p = gtr_p.next() node_now_q = gtr_q.next() if not self.check(node_now_p, node_now_q): return False#,node_now_p.val, node_now_q.val, self.check(node_now_p, node_now_q) except: # stop Iteration.... return True #,node_now_p.val, node_now_q.val, self.check(node_now_p, node_now_q)
中间有不少语法错误,忘记怎么用了。
另外这个代码的问题是速度比较慢。
我猜测整个判断结构应该可以优化一下。
相关文章推荐
- android 属性动画(view普通使用 和 自定义view使用)
- 监听者模式
- 开荒新系列之Leetcode: 003-Delete Node in a Linked List
- ASCII字符串转换成16进制
- react canvas
- 深入剖析Java集合框架及其显示应用(上)
- 讲义笔记
- ffmpeg学习笔记1--下载ffmpeg
- Java数据结构和算法系列2--数组
- PHP Warning: Module 'modulename' already loaded in Unknown on line 0 的解决方法
- Reorder List
- 【Android】Android插件开发 —— 打开插件的Activity(代理方式)
- 数据结构--期末课程设计
- Codeforces Round #337 (Div. 2)-------补题
- [编译] 1、第一个makefile简单例子
- HTML笔记
- 3D Touch 的实现:
- MFC新手心得体会(外部类访问dlg变量,unicode中cstring转string)
- 建站随笔-互联之家—hulianw.cn
- KVO & KVC & NSNotificationCenter