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

2018-03-09  本文已影响0人  半瓶酱油

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


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

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

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;

        }

上一篇 下一篇

猜你喜欢

热点阅读