1.给定一个二叉树,返回它的前序遍历。
示例 :
输入 : [1, null, 2, 3]
1
2
/
3
输出:[1, 2, 3]
int treeSize(struct TreeNode* root)//求二叉树中所有的结点
{
if (root == NULL)
return 0;
else
return treeSize(root->left) + treeSize(root->right) + 1;
}
void numpreorder(struct TreeNode* root, int* preorder, int* pnum)//依据先根再左再右的顺序进行遍历
{
if (root == NULL)
return;
preorder[*pnum] = root->val;
++(*pnum);
numpreorder(root->left, preorder, pnum);
numpreorder(root->right, preorder, pnum);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize)
{
*returnSize = treeSize(root);
int *preorder = (int*)malloc(*returnSize*sizeof(int));
int num = 0;
numpreorder(root, preorder, &num);
return preorder;
}
2.给定一个二叉树,返回它的中序遍历
输入 : [1, null, 2, 3]
1
2
/
3
输出:[1, 3, 2]
int treeSize(struct TreeNode* root)//求二叉树的所有结点
{
if (root == NULL)
return 0;
else
return treeSize(root->left) + treeSize(root->right) + 1;
}
void inordernum(struct TreeNode* root, int* inorder, int* pnum)//中序遍历先左再右再根
{
if (root == NULL)
return;
inordernum(root->left, inorder, pnum);
inorder[*pnum] = root->val;
++(*pnum);
inordernum(root->right, inorder, pnum);
}
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
*returnSize = treeSize(root);
int* inorder = (int*)malloc((*returnSize)*sizeof(int));
int num = 0;
inordernum(root, inorder, &num);
return inorder;
}