二叉树的遍历
前序遍历
给出一棵二叉树,返回其节点值的前序遍历。
样例
给出一棵二叉树 {1,#,2,3}
,
1
\
2
/
3
返回 [1,2,3]
.
class Solution: """ @param: root: A Tree @return: Preorder in ArrayList which contains node values. """ def preorderTraversal(self, root): # write your code here self.result = [] self.traverse(root) return self.result def traverse(self,root): if not root: return self.result.append(root.val) self.traverse(root.left) self.traverse(root.right)
中序遍历与后序遍历类似,修改traverse函数中root left right 的先后顺序即可。
层次遍历
给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)
样例
给一棵二叉树 {3,9,20,#,#,15,7}
:
3
/ \
9 20
/ \
15 7
返回他的分层遍历结果:
[ [3], [9,20], [15,7] ]
class Solution: """ @param: root: A Tree @return: Level order a list of lists of integer """ def levelOrder(self, root): # write your code here self.result = [] if not root: return self.result q = [root] while q: new_q = [] self.result.append([n.val for n in q]) for node in q: if node.left: new_q.append(node.left) if node.right: new_q.append(node.right) q = new_q return self.result