1. 程式人生 > >每天一道LeetCode-----從右向左觀察一棵二叉樹,返回能看到的元素

每天一道LeetCode-----從右向左觀察一棵二叉樹,返回能看到的元素

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); } };