二叉树的右视图

本文介绍了一种解决LeetCode右视图问题的非深度优先搜索算法,通过递归遍历二叉树,将同一高度的节点值存入数组,最终返回每一层的右侧节点值。
摘要由CSDN通过智能技术生成

这道题,我看了一个特别好的解法,而且可以不用深度优先搜索,由此想分享一下

题目链接:. - 力扣(LeetCode)

思路:先遍历左子树,把同一高度的值,放在一个数组里,在遍历右数组,将同一高度的值替换,

由此完成

下面举一个列子:

void test(struct TreeNode* root ,int height, int* Array , int* returnSize )

{

    if( root == NULL )

    {

        return ;

    }

    if( height + 1 > *returnSize )//height为当前高度,*returnSize为当前已知最高高度

    *returnSize = height + 1;

    Array[height] = root->val;//主要是运用到height在同一高度上是不变的

    test(root->left,height+1,Array,returnSize);

    test(root->right,height+1,Array,returnSize);

    return;

}

int* rightSideView(struct TreeNode* root, int* returnSize) {

    int* Array = (int*)calloc(sizeof(int) , 1010 );//设置1010是为了防止对数组的越界

    *returnSize = 0;

    test(root,0,Array,returnSize);

    return Array;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值