题目 <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;
}