python .extend()与.append()
extend()
是将两个list合并成一个list。append()
是将你传入的参数看做一个元素,拼到 上一个list中。
class Solution:
def levelOrder(self, root: 'Node') -> List[List[int]]:
results = []
if not root:
return results
from collections import deque
que = deque([root])
while que:
size = len(que)
# print(size,que)
result = []
for _ in range(size):
cur = que.popleft()
result.append(cur.val)
if cur.children:
que.extend(cur.children)############extend与append的区别
results.append(result)
return results
python中的.extend()_也许明天,会美好的博客-CSDN博客_python .extend()
遗留问题:
lc226 翻转二叉树【已解决】
迭代法 广度优先(层序遍历)和深度优先(前序遍历)的区别,代码见下:
#深度优先(前序遍历)
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
if not root:
return root
st = []
st.append(root)
while st:
node = st.pop()
node.left, node.right = node.right, node.left #中
if node.right:
st.append(node.right) #右
if node.left:
st.append(node.left) #左
return root
#广度优先(层序遍历)
import collections
class Solution:
def invertTree(self, root: TreeNode) -> TreeNode:
queue = collections.deque() #使用deque()
if root:
queue.append(root)
while queue:
size = len(queue)
for i in range(size):
node = queue.popleft()
node.left, node.right = node.right, node.left #节点处理
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
return root
二叉树的后续遍历
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def postorderTraversal(self, root: TreeNode) -> List[int]:
# 注意:根节点为空,直接返回空列表
if not root:
return []
stack = []
res = []
while root or stack:
while root:
# 当前节点入栈
stack.append(root)
# 如果当前节点有左子树,继续向左子树找
if root.left:
root = root.left
# 如果当前节点无左子树,在右子树继续找
else:
root = root.right
# 跳出循环的条件是 root 为空,那当前栈顶元素为叶子节点。
# 弹出栈顶元素,并加入结果数组
cur = stack.pop()
res.append(cur.val)
# 如果栈不为空,且当前栈顶元素的左节点是刚刚跳出的栈顶元素 cur
# 则转向遍历右子树当前栈顶元素的右子树
if stack and stack[-1].left == cur:
root = stack[-1].right
# 否则证明当前栈顶元素无左右子树,那当前的栈顶元素弹出。
else:
root = None
return res
作者:rocky0429-2
链接:https://leetcode.cn/problems/binary-tree-postorder-traversal/solution/acm-xuan-shou-tu-jie-leetcode-er-cha-shu-q9ep/