题目链接: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;
}
标签:right,nil,queue,Right,二叉树,101,root,LeetCode,left
From: https://www.cnblogs.com/lxing-go/p/17402885.html