/**
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(). */typedef struct TreeNode Node;
void PreOrder(Node* pRoot,intpRes,int index) { if(pRoot) { pRes[*index]=pRoot->val;//将从根节点开始的二叉树的值放入这段空间中 (*index)++; PreOrder(pRoot->left,pRes,index);//遍历左子树 PreOrder(pRoot->right,pRes,index);//遍历右子树 } }
int GetTreeSize(Node* pRoot) {//求二叉树的节点个数 if(NULL==pRoot) return 0; return GetTreeSize(pRoot->left)+GetTreeSize(pRoot->right)+1; }
int* preorderTraversal(struct TreeNode* root, int* returnSize){ returnSize=GetTreeSize(root); int pRes=(int*)malloc(sizeof(int)*(*returnSize)); if(NULL==pRes) assert(0); int index=0; PreOrder(root,pRes,&index); return pRes; }