LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal

本文详细介绍了如何使用中序遍历与前序遍历构建二叉树,包括递归算法实现及关键步骤解析。

Search in inorder vector to find the next root->right, root->left index which is being used to set the border for next recursion in preorder border.

// you may assume that there is no duplicates in the tree.
buildTree(vector<int>& preorder, vector<int>& inorder, TreeNode* root, int index, int nStart, int nEnd) {
  if(nStart >= nEnd) return;
  int num = preorder[index];
  root = new TreeNode(num);
  int r = start;
  while(r < nEnd && inorder[r] != num) {r++;}
  if(r < nEnd) buildTree(preorder, inorder, root->left, index + 1, nStart, r);
  if(nEnd > r + 1) buildTree(preorder, inorder, root->right, index + r + 1 - nStart, r + 1, nEnd);
}

TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
  TreeNode* root = NULL;
  int nSize = preorder.size();
  buildTree(preorder, inorder, root, 0, 0, nSize);
  return root;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值