日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

重建二叉树(基于js)

發布時間:2024/1/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 重建二叉树(基于js) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重復的數字。例如輸入前序遍歷序列{1,2,4,7,3,5,6,8}和中序遍歷序列{4,7,2,1,5,3,8,6},則重建二叉樹并返回。

一棵樹的根節點可以就是這棵樹前序遍歷的第一個節點,沒毛病吧!

在中序遍歷得到的序列中找到該節點,它左邊的序列就是該節點的左子樹,右序列就是該節點的右子樹。而左右子樹的前序序列和中序序列也可以得到

接著利用遞歸完成二叉樹的重組

?

function TreeNode(x) {? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//構建節點
  this.val = x;
  this.left = null;
  this.right = null;
}


function reConstructBinaryTree(pre, vin){? ? ?
  if(pre.length===0||vin.length===0){
  return null;
}

? ?  var index=vin.indexOf(pre[0]);? ? ? ? ? //找到根節點

  var left=vin.slice(0,index);? ? ? ? ? ? ? ?//左子樹的中序序列
  var right=vin.slice(index+1)? ? ? ? ? ? //右子樹的中序遍歷
  var node=new TreeNode(pre[0])? ??
  node.left=reConstructBinaryTree(pre.slice(1,index+1),left)
  node.right=reConstructBinaryTree(pre.slice(index+1),right)
  return node;
}

轉載于:https://www.cnblogs.com/hui-fly/p/9551584.html

總結

以上是生活随笔為你收集整理的重建二叉树(基于js)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。