Binary Tree Level Order Traversal II [LeetCode]
2013-11-12 12:46
441 查看
Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree
return its bottom-up level order traversal as:
BFS solution:
DFS solution:
For example:
Given binary tree
{3,9,20,#,#,15,7},
3 / \ 9 20 / \ 15 7
return its bottom-up level order traversal as:
[ [15,7] [9,20], [3], ]
BFS solution:
vector<vector<int> > levelOrderBottom(TreeNode *root) { vector<vector<int> > ret; if(root == NULL) return ret; vector<TreeNode *> level; level.push_back(root); while(true) { if(level.size() == 0) break; vector<int> nums; vector<TreeNode *> tmp; for(auto item : level) { nums.push_back(item->val); if(item->left != NULL) tmp.push_back(item->left); if(item->right != NULL) tmp.push_back(item->right); } ret.insert(ret.begin(), nums); level = tmp; } return ret; }
DFS solution:
void getLevelNums(TreeNode *root, vector<vector<int> > &ret, int level) { if(ret.size() < level + 1){ vector<int> nums; nums.push_back(root->val); ret.insert(ret.begin(), nums); }else if (ret.size() >= level + 1) { ret[ret.size() - level - 1].push_back(root->val); } if(root->left != NULL) getLevelNums(root->left, ret, level + 1); if(root->right != NULL) getLevelNums(root->right, ret, level + 1); } vector<vector<int> > levelOrderBottom(TreeNode *root) { vector<vector<int> > ret; if(root == NULL) return ret; getLevelNums(root, ret, 0); return ret; }
相关文章推荐
- leetcode(107):Binary Tree Level Order Traversal II
- 【LeetCode】Binary Tree Level Order Traversal II
- 【LeetCode】Binary Tree Level Order Traversal II
- Leetcode Binary Tree Level Order Traversal II
- [LeetCode][JavaScript]Binary Tree Level Order Traversal II
- 【LeetCode-107】Binary Tree Level Order Traversal II
- [leetcode]Binary Tree Level Order Traversal II
- leetcode_107_Binary Tree Level Order Traversal II
- [LeetCode] Binary Tree Level Order Traversal II
- LeetCode-Binary Tree Level Order Traversal II
- leetcode--BinaryTreeLevelOrderTraversal II (二叉树层遍历递归实现)
- LeetCode Binary Tree Level Order Traversal II
- leetcode---binary-tree-level-order-traversal-ii---树层次遍历
- Binary Tree Level Order Traversal II--LeetCode
- LeetCode 之 Binary Tree Level Order Traversal I and II
- Leetcode NO.107 Binary Tree Level Order Traversal II
- LeetCode(26)-Binary Tree Level Order Traversal II
- LeetCode: Binary Tree Level Order Traversal II [107]
- 【LeetCode】-Binary Tree Level Order Traversal II
- LeetCode_Binary Tree Level Order Traversal II