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

题目 <https://leetcode-cn.com/problems/binary-tree-right-side-view/>

中序

/**
 * 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().
 */
#define max(a,b) ((a)>(b)?(a):(b))

int maxDeep(struct TreeNode* root){
    if(root == NULL){
        return NULL;
    }
    int left_deep = maxDeep(root->left);
    int right_deep = maxDeep(root->right);
    return max(left_deep,right_deep)+1;
}

void search(struct TreeNode *root,int deep,int *nums){
    if(root == NULL){
        return;
    }
    search(root->left,deep+1,nums);
    nums[deep] = root->val;
    search(root->right,deep+1,nums);
}

int* rightSideView(struct TreeNode* root, int* returnSize){
    int deep = maxDeep(root);
    if(deep == 0){
        *returnSize = 0;
        return NULL;
    }

    int *returnNums = malloc(sizeof(int) * deep);
    search(root,0,returnNums);
    *returnSize = deep;
    return returnNums;
}

猜你喜欢

转载自blog.csdn.net/ZRXSLYG/article/details/111964725