Construct Binary Tree from Inorder and Preorder(Postorder) Traversal
来源:互联网 发布:start法则知乎 编辑:程序博客网 时间:2024/06/07 13:21
通过前序中序序列构造二叉树以及通过后序中序序列构造二叉树。
用递归,每次通过寻找根节点,改变peorder和inorder的起止位置,实现递归。
前序中序序列构造二叉树代码:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { if(preorder.size()==0||inorder.size()==0){ return NULL; } if(preorder.size()==1||inorder.size()==1){ return new TreeNode(preorder[0]); } return buildTree(preorder,0,preorder.size()-1,inorder,0,preorder.size()-1); } TreeNode *buildTree(vector<int> &preorder,int preL,int preR,vector<int> &inorder,int inL,int inR){ int mid=0; for(mid=inL;mid<=inR;mid++){ if(inorder[mid]==preorder[preL]){ break; } } if(preL>preR||inL>inR){ return NULL; } TreeNode *root=new TreeNode(preorder[preL]); TreeNode *left=buildTree(preorder,preL+1,preL+mid-inL,inorder,inL,mid-1); TreeNode *right=buildTree(preorder,preL+mid-inL+1,preR,inorder,mid+1,inR); root->left=left; root->right=right; return root; }};后序中序序列构造二叉树代码:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) { if(postorder.size()==0||inorder.size()==0){ return NULL; } if(postorder.size()==1||inorder.size()==1){ return new TreeNode(postorder[inorder.size()-1]); } return buildTree(postorder,0,postorder.size()-1,inorder,0,inorder.size()-1); } TreeNode *buildTree(vector<int> &postorder,int posL,int posR,vector<int> &inorder,int inL,int inR){ int mid=0; for(mid=inL;mid<=inR;mid++){ if(inorder[mid]==postorder[posR]){ break; } } if(posL>posR||inL>inR){ return NULL; } TreeNode *root=new TreeNode(postorder[posR]); TreeNode *left=buildTree(postorder,posL,posL+mid-inL-1,inorder,inL,mid-1); TreeNode *right=buildTree(postorder,posL+mid-inL,posR-1,inorder,mid+1,inR); root->left=left; root->right=right; return root; }};
0 0
- Construct Binary Tree from Inorder and Preorder(Postorder) Traversal
- Construct Binary Tree from Preorder (Postorder) and Inorder Traversal
- 【Leetcode】Construct Binary Tree From Inorder and Preorder/Postorder Traversal
- Construct Binary Tree from Inorder and Postorder Traversal & Preorder and Inorder
- [Leetcode] Construct Binary Tree from Inorder and Postorder/Preorder and Inorder Traversal
- leetCode(18):Construct Binary Tree from Preorder and Inorder (Inorder and Postorder) Traversal
- Construct Binary Tree from Inorder and Preorder(Inorder and Postorder) Traversal
- LeetCode 105, 106. Construct Binary Tree from Preorder and Inorder/Inorder and Postorder Traversal
- 【Leetcode】【python】Construct Binary Tree from Preorder and Inorder Traversal (Inorder and Postorder)
- 【LeetCode】Construct Binary Tree from (Preorder or Postorder) and Inorder Traversal
- LeetCode 105/106 Construct Binary Tree from Preorder/Postorder and Inorder Traversal
- 105\106. Construct Binary Tree from Inorder and Postorder\Preorder Traversal&重建二叉树
- leetcode题解-105 && 106. Construct Binary Tree from Preorder (PostOrder) and Inorder Traversal
- *(leetcode) Construct Binary Tree from Inorder and Postorder Traversal (tree)
- LeetCode[Tree]: Construct Binary Tree from Inorder and Postorder Traversal
- *(leetcode) Construct Binary Tree from Preorder and Inorder Traversal (tree)
- LeetCode[Tree]: Construct Binary Tree from Preorder and Inorder Traversal
- [leetcode][tree] Construct Binary Tree from Preorder and Inorder Traversal
- 马方发布会称失联机长飞行模拟器数据缺损需恢复
- 未来发展
- 配置android开发环境至运行第一个程序
- android基础入门AcitonBar使用(7)
- Hibernate如何调用存储过程
- Construct Binary Tree from Inorder and Preorder(Postorder) Traversal
- 《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]--第六章 深入理解wi-Fi Simple Configuration
- jQuery选择器面试题
- Ubuntu下创建软链接
- 如何在FireFox浏览器上访问微信公共账户提供的链接
- Oracle中 CLOB, BLOB和NLOB
- 浙大2013复试:PAT 1055 The World's Richest (25)
- HDU - 1175 连连看
- Thread.interrupt()