leetcode刷题笔记-二叉树1

今天开始刷二叉树了。

对称二叉树

给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

    1
   / \
  2   2
 / \ / \
3  4 4  3

这道题实际上就是判断两棵树是否完全相同的问题的翻版,对比判断两棵树是否相等的模板代码:

boolean isSameTree(TreeNode root1, TreeNode root2) {
    // 都为空的话,显然相同
    if (root1 == null && root2 == null) return true;
    // 一个为空,一个非空,显然不同
    if (root1 == null || root2 == null) return false;
    // 两个都非空,但 val 不一样也不行
    if (root1.val != root2.val) return false;

    // root1 和 root2 该比的都比完了
    return isSameTree(root1.left, root2.left)
        && isSameTree(root1.right, root2.right);
}

可以写出自己的代码:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def isSymmetric(self, root: TreeNode) -> bool:
        if not root:
            return True
        def new_trees(left_tree,right_tree):
            if left_tree==None and right_tree==None:
                return True
            if left_tree==None or right_tree==None:
                return False
            if left_tree.val != right_tree.val:
                return False
            return all((new_trees(left_tree.left,right_tree.right),
                        new_trees(left_tree.right,right_tree.left)))
        return new_trees(root.left,root.right)

此外,这里面还学到了函数all()

all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。
元素除了是 0、空、None、False 外都算 True。

语法:

all(iterable)

二叉树的最大深度

给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。

    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。

反直觉,递归真的反直觉(我简直太菜了):

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def maxDepth(self, root: TreeNode) -> int:
        if root==None:
            return 0
        left_height=self.maxDepth(root.left)
        right_height=self.maxDepth(root.right)
        return max(left_height,right_height)+1

你可能感兴趣的:(leetcode)