650 · Find Leaves of Binary Tree
Algorithms
Medium
Description
Given a binary tree, collect a tree’s nodes as if you were doing this: Collect and remove all leaves, repeat until the tree is empty.
Example
Example1
Input: {1,2,3,4,5}
Output: [[4, 5, 3], [2], [1]].
Explanation:
1
/
2 3
/ \
4 5
Example2
Input: {1,2,3,4}
Output: [[4, 3], [2], [1]].
Explanation:
1
/
2 3
/
4
Tags
Company
LinkedIn
Related Problems
97
Maximum Depth of Binary Tree
Easy
155
Minimum Depth of Binary Tree
Easy文章来源:https://www.toymoban.com/news/detail-828867.html
解法1:
这是一道非常好的题目!
用后序遍历!文章来源地址https://www.toymoban.com/news/detail-828867.html
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/*
* @param root: the root of binary tree
* @return: collect and remove all leaves
*/
vector<vector<int>> findLeaves(TreeNode * root) {
// write your code here
helper(root);
return res;
}
private:
vector<vector<int>> res;
int helper(TreeNode *root) {
if (!root) return 0;
//下面这段不需要
// if (!root->left && !root->right) {
// if (res.size() < 1) res.push_back(vector<int>());
// res[0].push_back(root->val);
// return 1;
// }
int left = helper(root->left);
int right = helper(root->right);
int height = max(left, right) + 1;
if (res.size() < height) res.push_back(vector<int>());
res[height - 1].push_back(root->val);
return height;
}
};
到了这里,关于LintCode 650 · Find Leaves of Binary Tree (binary tree 后序遍历非常好的题目!)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!