Leetcode 107. 二叉树的层次遍历 II
题目
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
测试样例
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其自底向上的层次遍历为:
[
[15,7],
[9,20],
[3]
]
题解
dfs遍历,根据当前层数high和数组的大小n,可以确定当前层数在数组中的下标为n-high,从而实现遍历。
代码
vector<vector<int>> ans;
void seach(TreeNode*root,int length){
if(root == NULL) return;
int n=ans.size();
if(length > n){ //当前层数第一次遍历到
ans.insert(ans.begin(),{root->val});
n++;
}
else ans[n-length].push_back(root->val);
seach(root->left,length+1);
seach(root->right,length+1);
}
vector<vector<int>> levelOrderBottom(TreeNode* root) {
if(root == NULL) return ans;
else ans.push_back({});
seach(root,1);
return ans;
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。