网站 外包合同,北京微信网站制作,购物网站网页设计,网站备案报价给定一个二叉树#xff0c;返回其节点值自底向上的层次遍历。 #xff08;即按从叶子节点所在层到根节点所在的层#xff0c;逐层从左向右遍历#xff09;
例如#xff1a; 给定二叉树 [3,9,20,null,null,15,7], 3/ \9 20/ \15 7返回其自底向上的层次遍历为#xff…给定一个二叉树返回其节点值自底向上的层次遍历。 即按从叶子节点所在层到根节点所在的层逐层从左向右遍历
例如 给定二叉树 [3,9,20,null,null,15,7], 3/ \9 20/ \15 7返回其自底向上的层次遍历为
[[15,7],[9,20],[3]
]
解法一
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vectorvectorint levelOrderBottom(TreeNode* root) {if(!root) return {};queueTreeNode * qu;qu.push(root);vectorvectorint res;while(!qu.empty()){vectorint temp;int n qu.size();while(n--){TreeNode * s qu.front();qu.pop();temp.push_back(s-val);if(s-left) qu.push(s-left);if (s-right) qu.push(s-right);}res.insert(res.begin(), temp);}return res; }
};
解法二
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/
class Solution {
public:vectorvectorint levelOrderBottom(TreeNode* root){vectorvectorint result;vectorint temp;queueTreeNode* TreeQueue;stackvectorint TreeStack;unsigned long cursize 0;if (root NULL){return result;}TreeQueue.push(root);while (TreeQueue.size() ! 0){cursize TreeQueue.size();for (unsigned int index 0; index cursize; index){TreeNode* indexnode TreeQueue.front();TreeQueue.pop();temp.push_back(indexnode-val);if (indexnode-left ! NULL){TreeQueue.push(indexnode-left);}if (indexnode-right ! NULL){TreeQueue.push(indexnode-right);}}TreeStack.push(temp);temp.clear();}while (TreeStack.empty() ! true){result.push_back(TreeStack.top());TreeStack.pop();}return result;}
};