每天一道LeetCode-----从右向左观察一棵二叉树,返回能看到的元素
2018-03-01 14:29
441 查看
Binary Tree Right Side View
原题链接Binary Tree Right Side View从右向左观察一棵二叉树,返回能看到的元素
遍历一遍即可,只记录靠右的元素
代码如下
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<int> rightSideView(TreeNode* root) { vector<int> views; scan(root, 0, views); return views; } private: void scan(TreeNode* root, int h, vector<int>& views) { if(!root) return; if(h >= views.size()) views.emplace_back(root->val); /* 先遍历右侧,这样就可以先选择右边的元素 */ scan(root->right, h + 1, views); scan(root->left, h + 1, views); } };
相关文章推荐
- 每天一道LeetCode-----二叉树逐层遍历,每一层存在一个序列中,返回所有序列集合
- 每天一道LeetCode-----寻找地增序列中第一个大于等于目标元素的位置
- 每天一道LeetCode-----找到1,2,...,n这n个数所有的组合,每个组合有k个元素,且元素大小递增
- 每天一道LeetCode-----计算最长的元素连续序列长度
- 每天一道LeetCode----从数组中选择若干不连续元素使得总和最大
- 每天一道LeetCode-----根据中序遍历和后序遍历重构二叉树
- 每天一道LeetCode-----给定一个矩阵,如果某个元素是0,就将所在行所在列上所有元素否置0
- 每天一道LeetCode-----在有序的二维数组中查找某个元素
- 每天一道LeetCode-----删除序列中指定元素,将满足要求的元素移动到前面
- 每天一道LeetCode-----寻找二叉搜索树中第k小的元素
- 每天一道LeetCode-----根据先序遍历和中序遍历还原二叉树
- 每天一道LeetCode-----从有序数组中删除重复元素
- 每天一道LeetCode-----摩尔投票法寻找给定数组中出现个数大于n/2或n/3的元素
- 每天一道LeetCode-----判断两个二叉树是否相同
- 每天一道LeetCode-----有序数组循环右移n位后,寻找最小值,数组中可能包含重复元素
- 每天一道LeetCode-----实现一个栈,提供一个接口用于返回栈中最小值
- 每天一道LeetCode-----为二叉树增加next节点,指向同一层的下一个节点
- 每天一道LeetCode-----计算整型数二进制中1的个数/返回二进制翻转后的结果
- 每天一道LeetCode-----计算二叉树的最大深度及最小深度,判断二叉树是否是高度平衡二叉树
- 每天一道LeetCode-----给定序列中2/3/4个元素的和为target的所有集合,或3个元素的和最接近target的集合