title | date | permalink | tags | |||
---|---|---|---|---|---|---|
Blog Post number 2 |
2021-08-16 |
/posts/2021/08/binaryTree-levely-output/ |
|
给你一个二叉树,
e.g. Given binary tree: {3,9,20,#,#,15,7},
T = TreeNode(3)
T.left = TreeNode(9)
T.right = TreeNode(20)
T.right.left = TreeNode(15)
T.right.right = TreeNode(7)
Tree图
in order traversal result:
[
[3],
[9, 20],
[15, 7]
]
None
.
- 无论
何 时都得 照 顾好base case- 如果给的tree结构
里 一 个node也没有 ,我 们不用 担心什么,直接 return空 []
class Solution: def levelOrder(self, root): if not root: return []
- 如果给的tree结构
之 后 ,我 们用python list.pop(index=)来 拿到我 们想要 的 current node。注意 一 下 pop()和 pop(0)的 区 别- pop()
是 取 list中 最 后 一 个元素 - pop(0)
是 取 list中 1st元素
>>> a = [1,2,3] >>> print(a.pop()) 3 >>> print(a.pop(0)) 1 >>>
- pop()
Note:
注意 append node的 顺序,我 们首先 append left child然 后 right child,因 为我们是被 要求 一层一层从左到右存放的
if curnode.left: queue.append(curnode.left)
if curnode.right: queue.append(curnode.right)
这个过程
问:怎样
quene就pop
length = len(quene)
in_list = []
for _ in range(length):
curnode = quene.pop(0) # 移 除 第 一 个,因 为是从上往下遍 历
in_list.append(curnode.val) # 拿值
if curnode.left: quene.append(curnode.left) # store left
if curnode.right: quene.append(curnode.right) # store right
outlist.append(in_list)
for
for _ in range(length):
curnode = quene.pop(0) # 移 除 第 一 个,因 为是从上往下遍 历
in_list.append(curnode.val) # 拿值
if curnode.left: quene.append(curnode.left) # store left
if curnode.right: quene.append(curnode.right) # store right
if curnode.left: quene.append(curnode.left) # store left
if curnode.right: quene.append(curnode.right) # store right
这里
out_list.append(in_list)
组合
length = len(quene)
in_list = []
for _ in range(length):
curnode = quene.pop(0) # (默 认移除 列 表 最 后 一 个元素 )这里需要 移 除 队列最 头上的 那 个
in_list.append(curnode.val) # 1st get left val, then got right val: [level0:l, level1:l,r, level2:l,r...]
if curnode.left: quene.append(curnode.left) # first store left then right, same with in order
if curnode.right: quene.append(curnode.right)
out_list.append(in_list)
层序
- [102] 二叉树的层序遍历
- [107] 二叉树的层次遍历II
- [199] 二叉树的右视图
- [637] 二叉树的层平均值
- [429] N
叉 树的前 序 遍 历 - [515]
在 每 个树行 中 找最大 值 - [116]
填 充 每 个节点 的 下 一个右侧节点指针 - [117]
填 充 每 个节点 的 下 一个右侧节点指针II - [104]
二 叉 树的最大 深度 - [111]
二 叉 树的最小 深度
按类