二叉树的前序遍历

    xiaoxiao2023-10-07  177

    /**

    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; }

    最新回复(0)