原題地址:http://oj.leetcode.com/problems/binary-tree-level-order-traversal/
題意:二叉樹的層序遍歷的實現。
解題思路:二叉樹的層序遍歷可以用bfs或者dfs來實現。這里使用的dfs實現,代碼比較簡潔。實際上,二叉樹的先序遍歷就是dfs實現。
比如一棵樹如下:
1
/ \
2 3
/ \ / \
4 5 6 7
二叉樹的先序遍歷為{1,2,4,5,3,6,7},可以看到這個遍歷順序實際上就是dfs。在這個遍歷中,我們可以用一個level來記錄節點的高度,根節點高度為0。
代碼:
# Definition for a binary tree node # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # @param root, a tree node # @return a list of lists of integers def preorder(self, root, level, res): if root: if len(res) < level+1: res.append([]) res[level].append(root.val) self.preorder(root.left, level+1, res) self.preorder(root.right, level+1, res) def levelOrder(self, root): res=[] self.preorder(root, 0, res) return res