剑指offer-58:对称的二叉树

对称的二叉树

https://www.nowcoder.com/practice/ff05d44dfdb04e1d83bdbdab320efbcb?tpId=13&&tqId=11211&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

题目:请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。
示例1
输入:{8,6,6,5,7,7,5}
返回值:true
示例2
输入:{8,6,9,5,7,7,5}
返回值:false

思路:
1:实现一个判断结点是否相等的函数,且在内部进行递归,主函数直接放入左子树与右子树进行调用
2:判断是否相等的函数具有两个形参,p和q分别代表左节点和右节点,判断的条件有三个
3:p和q如果都为空,则返回true;p和q其中一个为空,则返回false;p和q的值不相等返回false。
4:进行递归,p的左和q的右进行递归,p的右和q的左进行递归
注意:第三点,三个判断条件的先后顺序也要小心。

function same(p,q){
    if(!p && !q) return true
    if(!p || !q) return false
    if(p.val !== q.val) return false
    return same(p.left,q.right) && same(p.right,q.left) 
}
function isSymmetrical(pRoot)
{
    // write code here
    if(!pRoot) return true
    return same(pRoot.left,pRoot.right)
}
全部评论

相关推荐

1 1 评论
分享
牛客网
牛客企业服务