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

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

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

Note:

You may assume that duplicates do not exist in the tree.

class Solution {public:    /* from Preorder and Inorder Traversal */    TreeNode* buildTree(vector
& preorder, vector
& inorder) { return helper(preorder,0,preorder.size(),inorder,0,inorder.size()); } TreeNode* helper(vector
& preorder,int i,int j,vector
& inorder,int ii,int jj) { // tree 8 4 5 3 7 3 // preorder 8 [4 3 3 7] [5] // inorder [3 3 4 7] 8 [5] // 每次从 preorder 头部取一个值 mid,作为树的根节点 // 检查 mid 在 inorder 中 的位置,则 mid 前面部分将作为 树的左子树,右部分作为树的右子树 if(i >= j || ii >= j) return NULL; int mid = preorder[i]; auto f = find(inorder.begin() + ii,inorder.begin() + jj,mid); int dis = f - inorder.begin() - ii; TreeNode* root = new TreeNode(mid); root -> left = helper(preorder,i + 1,i + 1 + dis,inorder,ii,ii + dis); root -> right = helper(preorder,i + 1 + dis,j,inorder,ii + dis + 1,jj); return root; }};

转载于:https://www.cnblogs.com/CarryPotMan/p/5343675.html

你可能感兴趣的文章
Java IO流详尽解析
查看>>
邮件服务系列之四基于虚拟用户的虚拟域的邮件系统(安装courier-authlib以及部分配置方法)...
查看>>
Linux VSFTP服务器
查看>>
DHCP中继数据包互联网周游记
查看>>
Squid 反向代理服务器配置
查看>>
Java I/O操作
查看>>
Tomcat性能调优
查看>>
项目管理心得
查看>>
Android自学--一篇文章基本掌握所有的常用View组件
查看>>
灰度图像和彩色图像
查看>>
通过vb.net 和NPOI实现对excel的读操作
查看>>
TCP segmentation offload
查看>>
java数据类型
查看>>
数据结构——串的朴素模式和KMP匹配算法
查看>>
FreeMarker-Built-ins for strings
查看>>
验证DataGridView控件的数据输入
查看>>
POJ1033
查看>>
argparse - 命令行选项与参数解析(转)
查看>>
一维数组
查看>>
Linux学习笔记之三
查看>>