怎么自己制作属于自己的网站,长春做网站用的软件,wordpress 字体大小,自媒体论坛交流推荐文章目录1. 题目2. 解题2.1 DFS2.2 queue按层从右边遍历1. 题目
给定一棵二叉树#xff0c;想象自己站在它的右侧#xff0c;按照从顶部到底部的顺序#xff0c;返回从右侧所能看到的节点值。
示例:输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:1 --…
文章目录1. 题目2. 解题2.1 DFS2.2 queue按层从右边遍历1. 题目
给定一棵二叉树想象自己站在它的右侧按照从顶部到底部的顺序返回从右侧所能看到的节点值。
示例:输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:1 ---/ \
2 3 ---\ \5 4 ---来源力扣LeetCode 链接https://leetcode-cn.com/problems/binary-tree-right-side-view 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。
2. 解题
2.1 DFS
用一个level变量表示深度深度存入的数据数量则存入否则说明同层已经存入数据不要再存了
class Solution {
public:vectorint rightSideView(TreeNode* root) {vectorint ans;dfs(root, ans, 0);return ans;}void dfs(TreeNode* root, vectorint ans, int level){if(root NULL)return;if(ans.size() level)ans.push_back(root-val);dfs(root-right, ans, level1);dfs(root-left, ans, level1);}
};2.2 queue按层从右边遍历
每层的第一个数据存入
class Solution {
public:vectorint rightSideView(TreeNode* root) {if(root NULL)return {};vectorint ans;queueTreeNode* q;q.push(root);int n;while(!q.empty()){n q.size();ans.push_back(q.front()-val);while(n--){if(q.front()-right)q.push(q.front()-right);if(q.front()-left)q.push(q.front()-left);q.pop();}}return ans;}
};