3——7队列,二叉树中的运用,递归

力扣199,二叉树的右视图

. - 力扣(LeetCode)

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
struct TreeNode* quene[101];
int* rightSideView(struct TreeNode* root, int* returnSize) {
    *returnSize = 0;
    if (root == NULL) {
        return NULL;
    }
    int front = 0, rear = 0;
    int* p = (int*)malloc(sizeof(int) * 101);
    quene[rear++] = root;

    while (front != rear) {
        int count = rear - front;  //count代表这层的节点数。
        while (count != 0) //表明在同一层,这里就是记录找到最右侧的,即该层中最后一个。
        {
            if (count == 1) //表明这是这层的最后一个
            {
                p[(*returnSize)++] = quene[front]->val;
            }
            if (quene[front]->left != NULL) 
            {
                quene[rear] = quene[front]->left;
                rear++;
            }
            if (quene[front]->right) 
            {
                quene[rear] = quene[front]->right;
                rear++;
            }
            front++;         //出队
            count--;
        }
    }
    return p;
}

力扣124,二叉树的最大路径

. - 力扣(LeetCode)

int max ;
int getMax(struct TreeNode*root)
{
    if (root == NULL)
    {
        return 0;
    }
    int left_num = fmax(0, getMax(root->left));
    int right_num = fmax(0, getMax(root->right));
    max = fmax(max, left_num + right_num + root->val);
    return root->val + fmax(left_num , right_num);
}

int maxPathSum(struct TreeNode* root) {
    max = INT_MIN;
  getMax(root);
  return max;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值