LeetCode 106. Construct Binary Tree from Inorder and Postorder Traversal

本文介绍了一种通过中序遍历和后序遍历构建二叉树的算法。该算法首先找到根节点,并递归地构建左右子树。关键在于正确确定每个子树的索引范围。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

The most important thing is to find the correct index.

void build(vector<int>& postorder, vector<int>& inorder, int index, int begin, int end, TreeNode*& root) {
  if(begin >= end) return;
  int n = postorder.size();
  int val = postorder[index];
  root = new TreeNode(val);
  int i = 0;
  while(i < n && inorder[i] != val) {i++;}
  if(i > 0) build(postorder, inorder, i + index - end, begin, i, root->left);
  if(i < n - 1) build(postorder, inorder, index - 1, i + 1, end, root->right);
}

TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
  TreeNode* root = NULL;
  build(postorder, inorder, postorder.size() - 1, 0, postorder.size(), root);
  return root;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值