本文共 989 字,大约阅读时间需要 3 分钟。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution { public: TreeNode* create(int zz,int zy,int xz,int xy,vector & preorder, vector & inorder) //zz中序左,zy中序右,xz先序左,xy先序右 { if(xz>xy) return NULL; //空树 TreeNode* root=new TreeNode; root->val=preorder[xz]; //先序第一个为根 int k; for(k=zz;k<=zy;k++) //在中序遍历中找到根,确定左右树的长度 if(inorder[k]==preorder[xz]) break; int num=k-zz; //左子树的长度 root->left=create(zz,zz+num-1,xz+1,xz+num,preorder,inorder); //建左树 root->right=create(zz+num+1,zy,xz+num+1,xy,preorder,inorder); //建右树 return root; } TreeNode* buildTree(vector & preorder, vector & inorder) { TreeNode* root=create(0,inorder.size()-1,0,preorder.size()-1,preorder,inorder); return root; }};
转载地址:http://jaao.baihongyu.com/