给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
示例 1:
输入:root = [1,null,2,3]
输出:[1,3,2]
示例 2:
输入:root = []
输出:[]
示例 3:
输入:root = [1]
输出:[1]
提示:
树中节点数目在范围 [0, 100] 内
-100 <= Node.val <= 100
进阶: 递归算法很简单,你可以通过迭代算法完成吗?
思路:
就是简单的中序遍历
/**
* 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().
*/
void bfs(struct TreeNode* root, int* returnSize, int* ans){
if(root->left != NULL) //遍历左子树
bfs(root->left, returnSize, ans);
ans[(*returnSize)++] = root->val; //记录跟根结点
if(root->right != NULL) //遍历右子树
bfs(root->right, returnSize, ans);
}
int* inorderTraversal(struct TreeNode* root, int* returnSize){
int *ans = malloc(sizeof(int) * 110); //申请空间,不能定义成数组
memset(ans, 0, sizeof(ans)); //清0
*returnSize = 0;
if(root == NULL){ //判空
return NULL;
}
bfs(root, returnSize, ans); //先序遍历
return ans;
}