二叉树的右视图(层次遍历)
给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例 1:
输入:root = [1,2,3,null,5,null,4]
输出:[1,3,4]
解释:

示例 2:
输入:root = [1,2,3,4,null,null,null,5]
输出:[1,3,4,5]
解释:

示例 3:
输入:root = [1,null,3]
输出:[1,3]
示例 4:
输入:root = []
输出:[]
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} * }; */ class Solution { public: vector<int> rightSideView(TreeNode* root) { vector<int> res; if(root==nullptr) return res; //层次遍历 queue<TreeNode*> q; q.push(root); while(!q.empty()){ int n = q.size();//这一层的节点数 for(int i=0;i<n;i++){ if(i==n-1){//每一层的最后一个节点的值放入res res.emplace_back(q.front()->val); } //将其左右子树入队 TreeNode* node = q.front(); if(node->left) q.push(node->left); if(node->right) q.push(node->right); //将该节点出队 q.pop(); } } return res; } };
浙公网安备 33010602011771号