重建二叉樹(四)
阿新 • • 發佈:2018-09-07
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; }
重建二叉樹(四)