题目:请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
分析:
root.left的对称节点是root.right,root.left.left的对称节点是root.right.right。root.left.right的对称节点是root.right.left
递归出口:
都为空指针则返回 true
只有一个为空则返回 false
两个指针当前节点值不相等 返回false
代码:
public static boolean isSymmetrical(BinaryTreeNode pRoot) {
return isSymmetrical(pRoot,pRoot);
}
public static boolean isSymmetrical(BinaryTreeNode pRoot1,BinaryTreeNode pRoot2) {
if (pRoot1 == null && pRoot2 == null)
return true;
if (pRoot1 == null || pRoot2 == null)
return false;
if (pRoot1.m_nValue != pRoot2.m_nValue)
return false;
return isSymmetrical(pRoot1.m_pLeft,pRoot2.m_pRight)
&& isSymmetrical(pRoot1.m_pRight,pRoot2.m_pLeft);
}
本文介绍了一个用于判断二叉树是否对称的函数实现。通过对二叉树的递归遍历,比较左子树与右子树的镜像节点,以确定整棵树是否对称。递归过程中,当遇到左右子树节点值不相等或结构不对称时,函数将返回false。
&spm=1001.2101.3001.5002&articleId=107769650&d=1&t=3&u=75e570bd58ec402c8fa684eb3f786c99)
287

被折叠的 条评论
为什么被折叠?



