代码随想录算法训练营day14

226.翻转二叉树

递归三部曲:

确定递归函数的参数和返回值

确定终止条件

当前节点为空的时候,就返回

确定单层递归的逻辑

因为是先前序遍历,所以先进行交换左右孩子节点,然后反转左子树,反转右子树。

101. 对称二叉树(深度优先搜索)

class Solution:

    def isSymmetric(self, root: Optional[TreeNode]) -> bool:

        def recur(L, R):

            if not L and not R: return True

            if not L or not R or L.val != R.val: return False

            return recur(L.left, R.right) and recur(L.right, R.left)

        return not root or recur(root.left, root.right)

104.二叉树的最大深度

后序遍历递归:
class Solution:

    def maxDepth(self, root: Optional[TreeNode]) -> int:

        if not root: return 0

        return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容