本文共 911 字,大约阅读时间需要 3 分钟。
链接:
题目:返回每一层的最右节点。
思路:层次遍历,每次统计当前层的节点个数(cur_low)和下一层的节点个数(next_low),当cur_low ==1 时,找到一个最右节点,然后更新cur_low(cur_low = next_low)。
代码:
class Solution {public: vector rightSideView(TreeNode* root) { vector ret; queueQ; int cur_low = 1; int next_low = 0; Q.push(root); while(!Q.empty()&&Q.front()){ TreeNode *t = Q.front(); if(cur_low == 1) ret.push_back(t->val); //找到一个最右节点 if(t->left) Q.push(t->left),next_low++; if(t->right) Q.push(t->right),next_low++; cur_low--; if(cur_low == 0) { //换到下一层 cur_low = next_low; next_low = 0; } Q.pop(); } return ret; }};
转载地址:http://rirai.baihongyu.com/