LeetCode 101. 对称二叉树

题目链接:LeetCode 101. 对称二叉树

题意:

给你一个二叉树的根节点 root , 检查它是否轴对称。

解题思路:

1. 递归法

采用递归法思路就比较简单,因为要比较二叉树是否是轴对称的,因此就是比较左右子树是否轴对称,
因此在遍历的过程中,就是比较左边的左子树 与 右边的右子树是否相等,以及 左边的右子树 与 右边的左子树是否相等。

递归代码如下

func isSymmetric(root *TreeNode) bool {
    return dfs(root.Left, root.Right)
}
func dfs(left , right *TreeNode) bool {
    if left == nil && right == nil {
        return true
    }
    if left == nil || right == nil || left.Val != right.Val{
        return false
    }
    return dfs(left.Left, right.Right) && dfs(right.Left, left.Right);
}

2. 迭代法

迭代代码如下:

func isSymmetric(root *TreeNode) bool {
    var queue []*TreeNode;
    if root != nil {
        queue = append(queue, root.Left, root.Right);
    }
    for len(queue) > 0 {
        left := queue[0];
        right := queue[1];
        queue = queue[2:];
        if left == nil && right == nil {
            continue;
        }
        if left == nil || right == nil || left.Val != right.Val {
            return false;
        };
        queue = append(queue, left.Left, right.Right, right.Left, left.Right);
    }
    return true;
}
posted @ 2023-05-15 19:47  小星code  阅读(18)  评论(0)    收藏  举报