给定一个二叉树的根节点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 = []
输出:[]
提示:
- 二叉树的节点个数的范围是
[0,100] -100 <= Node.val <= 100
思路
使用层次遍历的方法遍历二叉树的每一层,然后取每一层的最后一个元素即可
vector<int> rightSideView(TreeNode* root) { vector<int> res; if(!root) return res; queue<TreeNode*> inque; inque.push(root); int queSize=0; while(!inque.empty()){ queSize=inque.size(); for(int i=0;i<queSize-1;i++){ root=inque.front(); if(root->left) inque.push(root->left); if(root->right) inque.push(root->right); inque.pop(); } //处理每一层的最后一个元素 root=inque.front(); res.push_back(root); if(root->left) inque.push(root->left); if(root->right) inque.push(root->right); inque.pop(); } return res; }推荐一个零声教育学习教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx ,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,点击立即学习:链接