给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。
示例 1:
输入:root = [1,null,2,3]
输出:[3,2,1]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
这题我们需要先求出,树的长度,这很关键,解题代码如下:
/**
* 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().
*/
int len;
void dfs_back(struct TreeNode* root){
if(root){
len++;
dfs_back(root->left);
dfs_back(root->right);
}
}
void dfs_back2(struct TreeNode* root,int *re){
if(root){
dfs_back2(root->left,re);
dfs_back2(root->right,re);
re[len++]=root->val;
}
}
int* postorderTraversal(struct TreeNode* root, int* returnSize){
len=0;
dfs_back(root);
int *re=(int *)malloc(sizeof(int)*len);
len=0;
dfs_back2(root,re);
*returnSize=len;
return re;
}