题目
Given a binary tree, return the inorder traversal of its nodes' values.
For example:
Given binary tree {1,#,2,3},
1
\
2
/
3
return [1,3,2].
Note: Recursive solution is trivial, could you do it iteratively?
思路
题目比较简单,就是求出二叉树的中序遍历,关于二叉树,用递归实现比较容易。根据二叉树的中序遍历(左根右)的定义写出代码即可。
实现代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
void my_inorderTraversal(struct TreeNode* root, int* res,int* returnSize){
if(root==NULL){
return ;
}
//左节点
if(root->left!=NULL){
my_inorderTraversal(root->left, res,returnSize);
}
//根节点
res[(*returnSize)]=root->val;
(*returnSize)++;
//在看右节点
if(root->right!=NULL){
my_inorderTraversal(root->right, res,returnSize);
}
}
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
if(root==NULL){
return NULL;
}
//分配一定大小的空间用来保存结果
int *res=(int *)malloc(100*sizeof(int));
if(res==NULL)
exit(EXIT_FAILURE);
*returnSize=0;
my_inorderTraversal(root,res,returnSize);
return res;
}