Construct Binary Tree from Preorder and Inorder Traversal
来源:互联网 发布:ibm公司软件 编辑:程序博客网 时间:2024/06/07 02:44
Question
This may not be a tough problem,but that rack my brain by a while…
So I want to record it down for myself.
Code
struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; };/* 1.Take the preorder[0] as root for now; 2.Find the same node in inorder,get it's index; 3.Malloc as a new node; 4.Recursive: The point that confused me is how to divide the preorder and inorder.At last,I know:the index of root you find is the boundary.That means how many nodes left the root in inorder is the same as how many nodes left in preorder.*/struct TreeNode* buildTreePreorderInorder(int* preorder, int preorderSize, int* inorder, int inorderSize) { if(preorderSize<=0 || inorderSize<=0) return NULL; struct TreeNode *root=NULL; int val = preorder[0]; int i=0; for(;i<inorderSize && val!=inorder[i];++i); if(i>=inorderSize) return NULL; root = (struct TreeNode*)malloc(sizeof(struct TreeNode)); root->val = val; root->left = buildTreePreorderInorder(&preorder[1],i,inorder,i); root->right = buildTreePreorderInorder(&preorder[i+1],preorderSize-1-i,&inorder[i+1],inorderSize-i-1); return root;}//struct TreeNode* buildTreeInorderPostorder(int* inorder, int inorderSize, int* postorder, int postorderSize) { if(inorderSize<=0 || postorderSize<=0) return NULL; struct TreeNode *root = NULL; int val = postorder[postorderSize-1]; int i = 0; for(;i<inorderSize && val!=inorder[i];++i); if(i>=inorderSize) return NULL; root = (struct TreeNode*)malloc(sizeof(struct TreeNode)); root->val = val; root->left = buildTreeInorderPostorder(inorder,i,postorder,i); root->right = buildTreeInorderPostorder(&inorder[i+1],inorderSize-i-1,&postorder[i],postorderSize-1-i); return root;}
0 0
- *(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
- Construct Binary Tree from Preorder and Inorder Traversal & Construct Binary Tree from Inorder and P
- LeetCode: Construct Binary Tree from Preorder and Inorder Traversal
- Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode]Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode: Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode] Construct Binary Tree from Preorder and Inorder Traversal
- LeetCode Construct Binary Tree from Preorder and Inorder Traversal
- leetcode 109: Construct Binary Tree from Preorder and Inorder Traversal
- 【leetcode】Construct Binary Tree from Preorder and Inorder Traversal
- Construct Binary Tree from Preorder and Inorder Traversal
- Construct Binary Tree from Preorder and Inorder Traversal
- [LeetCode]Construct Binary Tree from Preorder and Inorder Traversal
- Construct Binary Tree from Preorder and Inorder Traversal
- SQLite -- 嵌入式关系型数据库
- UVa - 1312 - Cricket Field
- C++经典面试题(五)
- linux交叉工具链总结
- shell脚本编写存储过程(mysql)
- Construct Binary Tree from Preorder and Inorder Traversal
- Leetcode 227 Basic Calculator II
- 日志组件logback的介绍及配置使用方法
- eclipse中添加c++11支持
- 论兔子如何吃掉狼
- 呼叫保持流程
- Caffe+Ubuntu14.04+cuda6.5配置说明
- 数据库索引原理
- 美女主播床上玩游戏脱袜 遭2500万网友围观!