2018-03-09 判断两颗二叉树是否完全相等

思路大概是分别找出节点相同和不相同的条件,再根据这些条件确定返回结果还是递归。


起初我列出的条件太过复杂,既要判断当前两个节点的情况又要判断其左右节点的情况,代码写了一大堆可是仍然有考虑不周全的情况。后来仔细想了想,尽量将复杂的判断条件简单化,即:每次递归只判断当前两个节点的情况,子节点的情况留给下一次递归去做。于是给出以下判断条件:

(先根据空节点情况判断)

1.两个节点同时为空,返回true(到底了不需要继续递归)

2.两个节点不同时为空(一个为空一个不为空),一定不相同,返回false

(前两个条件排除了节点为空的可能性,接下来判断节点的值是否相等)

3.节点的值相等,则递归判断左右节点

4.两个节点的值不想等,返回false。


代码如下:

        public boolean isSameTree(TreeNode p, TreeNode q) {

          if (p==null && q==null) return true;

          if (p==null || q==null) return false;

          if (p.val == q.val) {

              return isSameTree(p.left, q.left) && isSameTree(p.right, q.right);

          }

          return false;

        }

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容