Leetcode笔记之199二叉树的右视图

题目:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

解题思路:首先想到的是深度遍历,但是想到要考虑顺序问题觉得比较麻烦。还是层序遍历最合适,直接输出每一层的最右边的值。用一个队列保存每一层的节点,完成一层就弹出一层,按层输出队头的值。

C++实现代码如下:

class Solution {
public:
    vector<int> rightSideView(TreeNode* root) {
        vector<int> output = {};
        if(root == NULL)  return output;
        queue<TreeNode*> q;
        q.push(root);
        while(!q.empty())
        {
            int len = q.size();
            output.push_back(q.front() -> val);
            while(len > 0)
            {
                TreeNode* p = q.front();
                q.pop();
                if (p -> right) q.push(p -> right);
                if (p -> left) q.push(p -> left);
                len--;
            }
        }
        return output;
    }
};
posted @ 2020-03-06 15:50  小辉辉123  阅读(117)  评论(0编辑  收藏  举报