首页 > 其他 > 详细

leetcode106

时间:2021-05-07 00:11:58      阅读:33      评论:0      收藏:0      [点我收藏+]
//JS版本的代码
var buildTree = function(inorder, postorder) { let post_idx; const idx_map = new Map(); const helper = (in_left, in_right) => { // 如果这里没有节点构造二叉树了,就结束 if (in_left > in_right) { return null; } // 选择 post_idx 位置的元素作为当前子树根节点 const root_val = postorder[post_idx]; const root = new TreeNode(root_val); // 根据 root 所在位置分成左右两棵子树 const index = idx_map.get(root_val); // 下标减一 post_idx--; // 构造右子树 root.right = helper(index + 1, in_right); // 构造左子树 root.left = helper(in_left, index - 1); return root; } // 从后序遍历的最后一个元素开始 post_idx = postorder.length - 1; // 建立(元素,下标)键值对的哈希表 let idx = 0; inorder.forEach((val, idx) => { idx_map.set(val, idx); }); return helper(0, inorder.length - 1); };

  

leetcode106

原文:https://www.cnblogs.com/KYSpring/p/14736293.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!