Fork me on GitHub

Leetcode199. Binary Tree Right Side View二叉树的右视图

给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例:

输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释:

 

先求深度,中序遍历或者前序遍历都可以

 

class Solution {
public:
    vector<int> v;
    vector<int> rightSideView(TreeNode* root) 
    {
        int len = GetDepth(root);
        if(len == 0)
            return v;
        v = vector<int>(len , 0);
        GetAns(root, 0);
        return v;

    }

    void GetAns(TreeNode* root, int depth)
    {
        if(root == NULL)
            return;
        v[depth] = root ->val;
        GetAns(root ->left, depth + 1);
        GetAns(root ->right, depth + 1);
    }

    int GetDepth(TreeNode *root)
    {
        if(root == NULL)
            return 0;
        return 1 + max(GetDepth(root ->left), GetDepth(root ->right));
    }
};

 

posted @ 2018-12-01 21:12  lMonster81  阅读(103)  评论(0编辑  收藏  举报
/*评论*/ /*top按钮*/

/* 网易云控件 */