二叉树的前序遍历
1.题目链接
2.思路
根 左子树 右子树的顺序进行遍历
3.实现
int TreeSize(struct TreeNode* root)
{
return root == NULL ? 0 : TreeSize(root->left) + TreeSize(root->right) + 1;
}
void _prevOrder(struct TreeNode* root, int* a, int* pi)
{
if (root == NULL)
return;
a[*pi] = root->val;
++(*pi);
//i要传地址过去 不然改变不了i
_prevOrder(root->left, a, pi);
_prevOrder(root->right, a, pi);
}
int* preorderTraversal(struct TreeNode* root, int* returnSize)
{
int size = TreeSize(root);
int* a = (int*)malloc(size * sizeof(int));
int i = 0;
_prevOrder(root, a, &i);
//获取数组大小
*returnSize = size;
return a;
}
4.运行结果
#21二叉树的前序遍历#完