判断二叉树是否对称
1. 题目
牛客BM31:给你二叉树的根节点root,判断该二叉树是否对称
2. 思路
递归,对比左右子树
- 左子树的左子树 ?= 右子树的右子树
- 左子树的右子树 ?= 右子树的左子树
核心步骤:对比两棵子树
伪代码
令两棵子树的根节点分别为a, b(共4种情况)
- ① 若a, b结点都为空,则两子树相等
- ② 若a, b结点其中一个不为空,则两子树一定不相等
- ③ 若a, b结点都不空,但结点的值不相等,则两子树一定不相等
- ④ 若a, b结点都不为空且两结点的值相等,则向下递归判断
流程图(共4种情况)
3. 代码
3.1 流程图版
public boolean isSymmetrical(TreeNode pRoot) {
//二叉树是否对称
if(pRoot == null) return true;//根节点为空,一定对称
return IsEquals(pRoot.left, pRoot.right);//比较左右两棵子树
}