美文网首页
tag8:树 二叉树的深度以及对称二叉树

tag8:树 二叉树的深度以及对称二叉树

作者: 是黄小胖呀 | 来源:发表于2021-01-04 23:50 被阅读0次

1、leetcode:104. 二叉树的最大深度

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],

    3

  / \

  9  20

    /  \

  15  7

返回它的最大深度 3 。

1、递归

classSolution: defmaxDepth(self, root: TreeNode)-> int:

        if not root:

            return 0        

        left=self.maxDepth(root.left)

        right=self.maxDepth(root.right)

        return max(left,right)+1

2、迭代

class Solution:

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

        if not root:

            return 0

        tmp=[root]

        level=0

        while tmp:

             l=[]

             k=len(tmp)

             for i in range(k):

                  a=tmp.pop(0)

                  if a.left:

                      l.append(a.left)

                  if a.right:

                      l.append(a.right)

             tmp=l

             level=level+1

        return level

2、对称二叉树

leetcode101. 对称二叉树

给定一个二叉树,检查它是否是镜像对称的。

例如,二叉树 [1,2,2,3,4,4,3] 是对称的。

    1

  / \

  2  2

/ \ / \

3  4 4  3

但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:

    1

  / \

  2  2

  \  \

  3    3

进阶:

你可以运用递归和迭代两种方法解决这个问题吗?

1、递归

比较两个节点:

class Solution:

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

        if root is None: 

            return True

        def bfs(left,right):

            if not left and not right:

                return True

            if not left or not right:

                return False

            if left.val!=right.val:

                return False

            return bfs(left.right,right.left) and bfs(left.left,right.right)

        return  bfs(root.left,root.right)

2、迭代

关键也是比较两个节点:

class Solution:

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

        if root is None: 

            return True

        tmp=[(root.left,root.right)]

        while tmp:

            left,right=tmp.pop(0)

            if not left and not right:

                continue

            if not left or not right:

                return False

            if left.val!=right.val:

                return False          

            tmp.append((left.left,right.right))

            tmp.append((left.right,right.left))

        return True

-20200104

相关文章

  • 二叉树

    深度优先遍历 递归 DFS 广度优先遍历 递归BFS 二叉树的最大最小深度 判断二叉树是否中轴对称

  • 每日Leetcode—算法(10)

    100.相同的树 算法: 101.对称二叉树 算法: 104.二叉树的最大深度 算法: 107.二叉树的层次遍历 ...

  • 二叉树相关算法

    二叉树定义 前序遍历(中序遍历、后续遍历只需要调整append的顺序即可) 层序遍历 二叉树的最大深度 对称二叉树...

  • 二叉树的层次遍历要先掌握 有一些题目是相似的比如:求二叉树的深度和是否为平衡二叉树;是否是相同的二叉树,是否为对称...

  • tag8:树 二叉树的深度以及对称二叉树

    1、leetcode:104. 二叉树的最大深度[https://leetcode-cn.com/problems...

  • 二叉树

    是否对称树 是否相同 中序遍历 二叉树的最大深度 二叉树的层序遍历输入:root = [3,9,20,null,n...

  • 【LeetCode】101-对称二叉树

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

  • 2019-04-09 BFS广度优先搜索刷题Day1

    Leetcode 101 对称二叉树 题目描述: 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2...

  • 104. 二叉树的最大深度

    二叉树的最大深度难度不大,关键是递归,以及递归停止条件要写清楚104. 二叉树的最大深度

  • LeetCode-101-对称二叉树

    LeetCode-101-对称二叉树 101. 对称二叉树[https://leetcode-cn.com/pro...

网友评论

      本文标题:tag8:树 二叉树的深度以及对称二叉树

      本文链接:https://www.haomeiwen.com/subject/seranktx.html