首页 > 代码库 > 先序遍历和后序遍历构建二叉树
先序遍历和后序遍历构建二叉树
递归的方法利用先序遍历和中序遍历构建二叉树,同样也可以利用到中序遍历和后序遍历构建二叉树。
//利用先序遍历和中序遍历构建二叉树TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { TreeNode *root=NULL; if(preorder.size()==0||inorder.size()==0||preorder.size()!=inorder.size()) return root; root=tree(preorder,0,preorder.size()-1,inorder,0,inorder.size()-1); return root;} TreeNode* tree(vector<int>&preorder,int preBegin,int preEnd,vector<int>&inorder,int inBegin,int inEnd){ TreeNode *root=NULL; if(preorder.size()==0||inorder.size()==0||preorder.size()!=inorder.size()) return root; TreeNode *leftNode=NULL; TreeNode *rightNode=NULL; root->val=preorder[preBegin]; int rootVal=root->val; int i;for(i=inBegin;i<=inEnd;i++) if(inorder[i]==root->val) break; if(i>inEnd) return root; int leftLen=i-inBegin; int rightLen=inEnd-i-1; leftNode=buildTree(preorder,preBegin+1,preBegin+leftLen,inorder,inBegin,inBegin+leftLen); rightNode=buildTree(preorder,preBegin+1+leftLen,preEnd,inorder,i+1,i+rightLen); root->left=leftNode; root->right=rightNode; return root;}
先序遍历和后序遍历构建二叉树
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。