劍指offer 4 重建二叉樹

2021-09-18 06:51:51 字數 1284 閱讀 2788

package com.jianzhioffer.reconstructbinarytree;

/** * 題目:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。 eg: 前序:

* 中序:

* 輸出:

* 1

* / \

* 2 3

* / / \

* 4 5 6

* \ /

* 7 8

* 思路:先序特點:根左右,中序是左根右,遞迴思想。 根據先序將中序進行劃分。

* * @author hexiaoli

*/public class main

public string tostring()

} public static treenode reconstructbinarytree(int pre, int in)

treenode resultnode = reconstructbinarytree(pre, 0, pre.length - 1, in, 0, in.length - 1);

return resultnode;

} public static treenode reconstructbinarytree(int pre, int prehead, int pretail, int in, int inhead,

int intail)

treenode curnode = new treenode(pre[prehead]);

for (int curindex = inhead; curindex <= intail; curindex++) 和

//前序序列中肯定也是和

//x的確定,前序的起點索引(prehead)+左子節點的個數-1個偏移量(curindex-inhead+1-1)=prehead + curindex - inhead

if (pre[prehead] == in[curindex])

} return curnode;

} public static void main(string args) throws exception ;

int in = ;

treenode treenode = reconstructbinarytree(pre, in);

system.out.println(treenode);

}}

劍指offer4 重建二叉樹

給出前序遍歷和中序遍歷,重新構建二叉樹.重建二叉樹主要就是遞迴,每一次新增乙個結點進入二叉樹,保證遞迴的順序和前序遍歷順序一致就ok了,多以左子樹的遞迴在前面,右子樹的遞迴放在後面,和前序遍歷的順序一致,第一次遞迴新增前序遍歷陣列中的第乙個,第二次遞迴新增的是前序遍歷陣列中的第二個.第n個就是陣列中...

劍指offer 4 重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 中序序列中,節點左邊為左子樹,右邊為右子樹。前序第乙個為根節點 12 4 7 3 5 6 8 左 4 7 215 3...

劍指offer 4 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。演算法設計思想 前序遍歷序列的第乙個元素為根結點的值,然後在中序遍歷序列中尋找根節點的值的位置 索引 從中序遍歷序列的起始位置到根結...