LeetCode—SameTree

来源:互联网 发布:怎么安装ps软件 编辑:程序博客网 时间:2024/04/28 07:22

Question:
问题:给定两个树,判断是否相等(结构相同且值相同)
Idea:
(1)处理树的问题,首先判断是否为空,是否只有一个根节点。
(2)特殊情况:两棵数均为空,一棵树为空,只有根节点时是否相等
(3)一般情况:判断是否相等,则应判断节点+左子树+右子树是否均相等。因此是一个递归的过程。根据left&&right判断
因此递归函数需要携带left和right的值。

public boolean isSameTree(TreeNode p, TreeNode q) {    if(p==null&&q==null){        return true;    }else if(p==null||q==null){        return false;    }    if(p.val!=q.val){        return false;    }    boolean left = true;    boolean right = true;    return traversalTree(p, q, left, right);}public boolean traversalTree(TreeNode p, TreeNode q,boolean left,boolean right){    //可能左节点和右节点都为空,说明检查到叶子节点,返回true    if(p==null&&q==null){        return true;    }    //其中有一个为空,则说明结构不等    else if(p==null||q==null){        return false;    }    //节点不等,则为false    if(p.val!=q.val){        return false;    }    //根相等,分别判断左子树、左子树    left = traversalTree(p.left, q.left, left, right);    right = traversalTree(p.right, q.right, left, right);    return left&&right;}
0 0
原创粉丝点击