199. 二叉树的右视图

199. 二叉树的右视图

题目链接:199. 二叉树的右视图(中等)

题目描述

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

示例 1:

输入: [1,2,3,null,5,null,4]
输出: [1,3,4]

示例 2:

输入: [1,null,3]
输出: [1,3]

示例 3:

输入: []
输出: []

题解

思路:用层次遍历(二叉树的层次遍历)的方法访问树中的节点,并只处理每一层的最后一个元素。即在访问树中每个节点的过程中,当遇到每层的最后一个节点时,将该节点的值存放在结果集中。

代码(C++):

vector<int> rightSideView(TreeNode* root) {
        queue<TreeNode*> que;
        vector<int> result;
        if (root != nullptr) que.push(root);
        while (!que.empty()) {
            int size = que.size();
            TreeNode* node;
            while (size--) {
                node = que.front();
                que.pop();
                if (node->left != nullptr) que.push(node->left);
                if (node->right != nullptr) que.push(node->right);
            }
            //将每一层的最后一个元素放入结果集
            result.push_back(node->val);
        }
        return result;
    }

分析:

  • 时间复杂度:O(N)

  • 空间复杂度:O(N)

posted @ 2021-11-26 16:45  wltree  阅读(27)  评论(0编辑  收藏  举报