199. 二叉树的右视图
Posted Debroon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了199. 二叉树的右视图相关的知识,希望对你有一定的参考价值。
199. 二叉树的右视图
题目
传送门:https://leetcode.cn/problems/binary-tree-right-side-view/
算法设计:深度优先搜索
一开始我以为只需要获取根节点、所有右节点即可,那就只需要右序遍历。
从右边看到的第一个节点,如上图的 8
,代表如果没有右节点,左节点也算,所以左子树也需要遍历。
问题是,1、3、6、8、9、10
有什么规律呢?
- 遍历顺序:因为是从右边看,先遍历右子树,再遍历左子树
- 每层的最右边节点:当前层数,遍历到的第一个节点。即当前递归层数 = 当前层第一个节点。
class Solution
int n = 0;
public:
void dfs( TreeNode *root, vector<int>& v )
if( root == NULL ) return;
if( n == v.size() )
v.push_back(root->val); // 把从右侧看到的第一个节点,添加到列表
n ++;
dfs(root->right, v); // 先遍历右子树
dfs(root->left, v); // 再遍历左子树
n --;
vector<int> rightSideView(TreeNode *root)
if( root == NULL ) return ;
vector<int> v;
dfs(root, v);
return v;
;
以上是关于199. 二叉树的右视图的主要内容,如果未能解决你的问题,请参考以下文章