首页 > 其他分享 >102. 二叉树的层序遍历

102. 二叉树的层序遍历

时间:2024-12-25 16:55:54浏览次数:1  
标签:count tmp cur 层序 next queue 二叉树 102 append

  1. 题目链接

  2. 解题思路:层序遍历就用队列,唯一需要注意的就是,要每一层单独收集,所以要用一个变量,记录每一层需要收集的数目,同时还要记录下一层需要收集的数目

  3. 代码

    class Solution:
        def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
            if root == None:
                return []
            queue = deque()
            ans = []
            queue.append(root)
            cur_count = 1    # 本层还需要收集多少个
            next_count = 0   # 下一层需要收集多少个
            tmp = []
            while queue:
                cur = queue.popleft()
                tmp.append(cur.val)
                if cur.left:
                    queue.append(cur.left)
                    next_count += 1
                if cur.right:
                    queue.append(cur.right)
                    next_count += 1
                cur_count -= 1
                if cur_count == 0:
                    ans.append(copy.copy(tmp))
                    tmp.clear()
                    cur_count = next_count
                    next_count = 0
            return ans
    

标签:count,tmp,cur,层序,next,queue,二叉树,102,append
From: https://www.cnblogs.com/ouyangxx/p/18630845

相关文章

  • 二叉树的最近公共祖先(递归)
    给定一个二叉树,找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树T的两个节点p、q,最近公共祖先表示为一个节点x,满足x是p、q的祖先且x的深度尽可能大(一个节点也可以是它自己的祖先)。” 示例1:输入:root=[3,5,1,6,2,0,8,null,n......
  • 101. 对称二叉树
    题目链接解题思路:递归的思路,就是左子树和右子树的值相等,同时,左子树的左子树与右子树的右子树要相似,左子树的右子树与右子树的左子树要相似。看代码很清晰代码classSolution:defprocess(self,node1,node2)->bool:ifnode1==Noneandnode2==None......
  • 94. 二叉树的中序遍历
    题目链接解题思路:中序遍历:左中右,用一个栈,同时用空来标识「中」,所以入栈顺序就是右->中->None->左代码classSolution:definorderTraversal(self,root:Optional[TreeNode])->List[int]:#使用栈#中序的顺序,左中右压栈就是右中左为了标......
  • 从前序与中序遍历序列构造二叉树(递归)
    给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例1:输入:preorder=[3,9,20,15,7],inorder=[9,3,15,20,7]输出:[3,9,20,null,null,15,7]示例2:输入:preorder=......
  • 二叉树展开为链表(先序遍历)
    给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例1:输入:root=[1,2,5,3,4,null,6]输出:[1,null,......
  • 二叉树的右视图(层次遍历)
    给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例1:输入:root=[1,2,3,null,5,null,4]输出:[1,3,4]解释:示例2:输入:root=[1,2,3,4,null,null,null,5]输出:[1,3,4,5]解释:示例3:输入:root=[1,null,3......
  • LeetCode94二叉树的中序遍历
    原理二叉树的中序遍历遵循“左子树-根节点-右子树”的顺序来访问二叉树中的每个节点。其基本原理是利用递归的思想,先递归地遍历根节点的左子树,访问完左子树的所有节点后,再访问根节点本身,最后递归地遍历根节点的右子树,这样就能按照中序遍历的规则依次访问二叉树中的所有......
  • 二叉树的层序遍历(队列)
    给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。 示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例2:输入:root=[1]输出:[[1]]示例3:输入:root=[]输出:[] /***Definitionforabinarytreen......
  • 二叉树的直径(递归)
    给你一棵二叉树的根节点,返回该树的 直径 。二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之间边数表示。 示例1:输入:root=[1,2,3,4,5]输出:3解释:3,取路径[4,2,1,3]或......
  • LeetCode:222.完全二叉树节点的数量
    跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的!代码随想录LeetCode:222.完全二叉树节点的数量给你一棵完全二叉树的根节点root,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节......