leetcode 101对称二叉树

## 思路

原题链接

  1. 使用递归的思路
  2. 调用递归函数dfs
  3. 进入递归函数后,终止条件是,两个结点都是空或者有个一个为空,或者两个结点的值不相等
  4. 若以上的终止条件没有被触发,则return 递归函数(左结点的左和右节点的右)&& (左节点的右和右结点的左)
class Solution {
    public boolean isSymmetric(TreeNode root) {
        //先判断是否是非空的
        if(root == null) return false;
        //调用递归函数
        return recur(root.left, root.right);
    }
    public boolean recur(TreeNode left, TreeNode right){
        if(left == null && right == null) return true;
        if(left == null || right == null) return false;
        if(left.val != right.val) return false;

        return recur(left.left, right.right) && recur(left.right, right.left);
    }
}



class Solution {
	public boolean isSymmetric(TreeNode root) {
		if(root==null) {
			return true;
		}
		//调用递归函数,比较左节点,右节点
		return dfs(root.left,root.right);
	}
	
	boolean dfs(TreeNode left, TreeNode right) {
		//递归的终止条件是两个节点都为空
		//或者两个节点中有一个为空
		//或者两个节点的值不相等
		if(left==null && right==null) {
			return true;
		}
		if(left==null || right==null) {
			return false;
		}
		if(left.val!=right.val) {
			return false;
		}
		//再递归的比较 左节点的左孩子 和 右节点的右孩子
		//以及比较  左节点的右孩子 和 右节点的左孩子
		return dfs(left.left,right.right) && dfs(left.right,right.left);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值