107. Binary Tree Level Order Traversal II

難度:Medium

Python:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 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
def dfs(root, depth, result):
if root == None:
return
if depth == len(result):
result.append([])

result[depth].append(root.val)

dfs(root.left, depth+1, result)
dfs(root.right, depth+1, result)


class Solution:
def levelOrderBottom(self, root: Optional[TreeNode]) -> List[List[int]]:
result = []
dfs(root,0,result)
result.reverse()
return result

C++:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void dfs(TreeNode* root, int depth, vector<vector<int>>& result) {
if(root == nullptr){
return;
}
if(depth == result.size()) {
result.push_back({});
}

result[depth].push_back(root->val);

dfs(root->left,depth+1,result);
dfs(root->right, depth+1,result);
}
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> result;
dfs(root, 0, result);
reverse(begin(result), end(result));
return result;
}
};