二叉树的右视图 (leetcode 199)

一:解题思路

以二叉树的广度优先的思想来做,即二叉树的层序遍历的思想来做,只把没一层的最后一个结点放入到最后的集合当中。

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    vector<int> rightSideView(TreeNode* root) 
    {
        vector<int> result;
        if (root == NULL) return result;
        queue<TreeNode*> queue;
        queue.push(root);

        while (!queue.empty())
        {
            int size = queue.size();

            for (int i = 0; i < size; i++)
            {
                TreeNode* node = queue.front();
                queue.pop();

                if (node->left != NULL)  queue.push(node->left);
                if (node->right != NULL) queue.push(node->right);

                if (i == size - 1)
                    result.push_back(node->val);
            }
        }

        return result;
    }
};

 

posted @ 2020-08-20 22:23  repinkply  阅读(192)  评论(0)    收藏  举报