1. 程式人生 > >重建二叉樹(四)

重建二叉樹(四)

binary 例如 bin eno struct const 第一個 ont ==

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

function reConstructBinaryTree(pre, vin)
{
   
    if(pre.length==0 || vin.length==0){
        return null;
    }
    
    //前序遍歷的第一個節點為根節點
    var root=pre[0];
    
    //找到在中序遍歷中 根節點的索引
var index=vin.indexOf(root); //根據根節點索引,可以在中序遍歷中,將二叉樹分為左子樹和右子樹 var left=vin.slice(0,index); var right=vin.slice(index+1); var node=new TreeNode(root); //重建的二叉樹的左子樹和右子樹也可以根據上面的步驟推導出來 //左子樹是根據前序和中序的左子樹推導 //右子樹也是根據前序和中序的右子樹推導 node.left=reConstructBinaryTree(pre.slice(1,index+1),left); node.right
=reConstructBinaryTree(pre.slice(index+1),right); return node; }

重建二叉樹(四)