LeetCode题解:Same Tree
来源:互联网 发布:google翻译 for mac 编辑:程序博客网 时间:2024/04/27 20:35
题目链接:
same-tree
题目描述:
Give two binary trees,write a function to check
if they are equal or not .
Two binary trees are considered equal if they are
structurally identical and the nodes have the same
value.
题目解释:
给定两个二叉树,实现一个函数来判断这两个
二叉树是否相同。
这里“相同”的概念不仅仅是指节点的数值,还
包括二叉树的结构是否相同(左子树跟右子树)。
解题方案:
涉及到树的问题,很多都会利用到递归的思想,
在这里我们依然是使用递归的方式。
我们从树的根开始,递归的去判断左子树和右
子树是否相同。
首先我们确定递归出口:
1.如果两课树都遍历完毕,遍历完毕的条件是
p == null and q == null,中途并没有return false
那么就return true.
2.如果在遍历过程中出现p、q中有一个为null的
情况,就说明两个二叉树在结构上不同,假设
p为null,那么说明第一个二叉树比第二个二叉
树少一课q子树,return false。
3.p q 的节点值不同 return false.
这三个条件就是递归出口,判断完这三个条件
以后我们继续递归左子树和右子树就可以了。
return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
下面是AC的源码:
/** * Definition for binary tree * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */bool isSameTree(struct TreeNode *p, struct TreeNode *q) { if(p == NULL && q == NULL) { return true; } if(p == NULL || q == NULL) { return false; } if(p->val != q->val ) { return false; } return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);}PS:我犯了个挺低级的错误。
这里要注意一个问题,在最开始我实现这个
时候,我构建测试用例(TreeNode节点):
TreeNode *p;
p->val = 32;
然后编译,报错。
实际上TreeNode *p 仅仅是一个声明,并不是
定义,还没有给(*p)结构体分配空间,所以才
会报错。
正确的定义结构体的一种方式为:
TreeNode *p = new TreeNode;
希望你们不要犯跟我同样的错误。
- LeetCode题解:Same Tree
- LeetCode题解:Same Tree
- LeetCode题解:Same Tree
- LeetCode题解:Same Tree
- 【LeetCode】【Python题解】Same Tree
- Leetcode题解 100. Same Tree
- LeetCode题解-100-Same Tree
- LeetCode 100. Same Tree 题解
- LeetCode 题解(40):Same Tree
- LeetCode 100. Same Tree 题解(C++)
- LeetCode 100. Same Tree 题解 —— Java
- Leetcode - Tree - Same Tree
- [leetcode][tree] Same Tree
- LeetCode: Same Tree
- LeetCode Same Tree
- [Leetcode] Same Tree
- LeetCode : Same Tree
- [LeetCode] Same Tree
- Julia: find 和其它
- 胡春华赴省科学院、省工业技术研究院开展专题调研
- python学习:urllib库学习:制作简易爬虫下载图片
- 卡特兰数
- lucas定理
- LeetCode题解:Same Tree
- 博弈总结
- HDU-1215-七夕节(Java+素数打表+超时坑人)
- windows 7 数据执行保护 开启关闭方法
- shell编程风格
- POJ 2749 - Building roads(2-SAT+二分)
- 计算几何中的精度问题(转)
- Linux下进程函数学习
- 错误集锦