博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Construct Binary Tree from Preorder and Inorder Traversal
阅读量:5107 次
发布时间:2019-06-13

本文共 1381 字,大约阅读时间需要 4 分钟。

题目:

Given preorder and inorder traversal of a tree, construct the binary tree.

通过先序遍历和中序遍历构造二叉树。大概思路是递归的构造,因为先序遍历总是先访问根结点,所以很容易从先序列表中得到根,位于该结点右侧的就是子树,再由这个根结点从中序列表中找到,位于该值左侧的就是左子树,右侧的即为又子树。然后分别用同样的方法构建左、右子树,直到构造完成。代码:

1     TreeNode *buildTree(vector
&preorder, vector
&inorder) { 2 // IMPORTANT: Please reset any member data you declared, as 3 // the same Solution instance will be reused for each test case. 4 int preIdx=0; 5 return buildTree(preorder,inorder,&preIdx,0,inorder.size()); 6 } 7 TreeNode* buildTree(vector
& preorder,vector
& inorder,int* preIdx,int inIdx,int inLen){ 8 if(preorder.size()==*preIdx||inLen==0) return NULL; 9 TreeNode* root = (TreeNode*)malloc(sizeof(TreeNode));10 root->val = preorder[*preIdx];11 root->left=NULL;12 root->right=NULL;13 int i=inIdx;14 while(i-inIdx
val) break;16 i++;17 }18 if(i-inIdx>0&&*preIdx
left=buildTree(preorder,inorder,&(++*preIdx),inIdx,i-inIdx);20 if(inLen-(i-inIdx)-1>0&&*preIdx
right=buildTree(preorder,inorder,&(++*preIdx),i+1,inLen-(i-inIdx)-1);22 return root;23 }

 

转载于:https://www.cnblogs.com/mike442144/p/3439959.html

你可能感兴趣的文章
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
iframe跨域与session失效问题
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
Hash和Bloom Filter
查看>>
python常用函数
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
【工具相关】iOS-Reveal的使用
查看>>
数据库3
查看>>
存储分类
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>
Python IO模型
查看>>
Ugly Windows
查看>>