会了层序遍历,感觉这将是一场屠杀,所有层序的题直接在原有的基础上改
题目:
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
输入: [1,2,3,null,5,null,4]
输出: [1,3,4]
解:
直接层序遍历,每一层只留最后一个值就好了
注释的部分是我一开始写的,其实也行
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
// vector<int> tempresult;
vector<int> result;
if(!root) return result;
queue<TreeNode*> treeQueue;
treeQueue.push(root);
while (!treeQueue.empty()) {
int nsize = treeQueue.size();
for (int i = 0; i < nsize; i++) {
TreeNode * tempNode = treeQueue.front();
treeQueue.pop();
// tempresult.push_back(tempNode -> val);
if (i == (nsize - 1)) result.push_back(tempNode -> val);
if (tempNode -> left) treeQueue.push(tempNode -> left);
if (tempNode -> right) treeQueue.push(tempNode -> right);
}
// result.push_back(*(tempresult.end() - 1));
// tempresult.clear();
}
return result;
}
};```