二叉樹構建(一)

2021-06-20 02:36:40 字數 1270 閱讀 1333

說明:

1.根據先序遍歷和中序遍歷或者後序遍歷和中序遍歷可以構建一棵二叉樹;

2.構建以後序遍歷和中序遍歷為例,結點資料域以整形為例。

定義二叉樹類

核心是constractpostcore函式。

class binarytree

binarytreenode(int value, binarytreenode left, binarytreenode right)

} public binarytree(int postorder, int inorder)

if(inorder == null || (inlen = inorder.length) == 0)

this.root = this.constractpostcore(postorder, 0, postlen -1, inorder, 0, inlen - 1);

} private binarytreenode constractpostcore(int postorder, int postbegin, int postend, int inorder, int inbegin, int inend)

// this a leaf node or may be throw exception

boolean isleaforexception = ((postbegin == postend) && (inbegin == inend));

if(isleaforexception)

// other situation postbegin < postend && inbegin < inend

int rootvalue = postorder[postend];

binarytreenode currentroot = new binarytreenode(rootvalue, null, null);

int rootpositioninorder = this.getrootpositioninorder(inorder, inbegin, inend, rootvalue);

boolean isfound = (rootpositioninorder != -1);

if(isfound)else

return currentroot;

} private int getrootpositioninorder(int inorder, int inbegin , int inend, int value)

}return -1;

}}

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

構建二叉樹

前序遍歷構建二叉樹是根據根節點 左節點 右節點的方式輸入資料,針對乙個節點來說,首先輸入的是根節點,根節點之後的數值應該是其左子節點,之後是右節點,如果是遞迴,則首先是一直設定左節點,之後再依次設定右節點。之前在看二叉樹過程中,見過最多的是輸入個位數字構建二叉樹,今天看到乙個可以輸入多個數字的輸入方...

二叉樹的構建

二叉樹包括順序儲存和鏈式儲存,這裡只說鏈式儲存,二叉樹的每個結點和雙鏈表有些類似,但是數的結構要比雙鏈表複雜,在構造樹的過程中涉及到遞迴呼叫的問題,遞迴的問題往往是很複雜的問題,因此,這裡單獨說二叉樹的構建。include include include 定義二叉樹 typedef struct n...