Java資料結構之二叉樹的建立

2021-09-22 20:04:24 字數 1006 閱讀 6351

二叉樹的遍歷可使非線性結構的樹轉換成線性序列。先序遍歷序列和後序遍歷序列反應父結點和孩子結點間的層次關係,中序遍歷序列反應兄弟節點間的左右次序關係。因為二叉樹是具有層次關係的結點構成的非線性結構,並且每個結點的孩子結點具有左右次序,所以已知一種遍歷序列無法確定唯一的二叉樹,只有同時知道中序和先序遍歷序列,或同時知道中序和後續遍歷序列,才能確定結點的層次關係和結點的左右次序,才能確定唯一的二叉樹。

步驟如下:

取先序遍歷的第乙個結點作為根結點,序列的結點數為n

在中序遍歷中查詢根結點,其位置為i,那麼在中序遍歷中根結點之前的i個結點構成根結點左子樹的中序遍歷序列,根結點後n-i-1個結點構成根結點右子樹的中序遍歷序列

在先序遍歷中,根結點之後i個結點構成的序列為根結點左子樹的先序遍歷序列,先序遍歷之後n-i-1個結點構成的序列為根結點右子樹的先序遍歷序列

重複(1)(2)(3),確定左右子樹的根結點和子樹的左右字數

用遞迴進行建立

/**由中序遍歷和先序遍歷建立二叉樹——已知兩種遍歷序列,從而構建二叉樹(已知先序和中序或已知後序和中序)

* @param string preorder 先序遍歷序列

* @param string inorder 中序遍歷序列

* @param int pre 先序遍歷中根結點的位置

* @param int in 中序遍歷中根結點的位置

* @param int n 序列的結點個數*/

public bitree(string preorder, string inorder,int pre, int in, int n) catch (exception e)

} else catch (exception e)

}if (2 * i + 2 < treechar.length) catch (exception e) }}

}} }

bitreenode

linkqueue

Java資料結構之二叉樹

樹的定義 樹是一種由邊連線著結點的資料結構,資料模型上的樹可以看做是一棵倒掛的樹木,有乙個主幹,下面是枝幹 樹葉。樹的資料結構模型如下 節點 上圖的圓圈,比如a b c d等都是表示節點,節點裡面包含了儲存的資料以及指向其它節點的位址引用。邊 連線節點的線稱為邊,邊表示節點的關聯關係。一般從乙個節點...

資料結構之二叉樹

在二叉樹中每個節點最多只能有兩個子節點。即左子節點和有子節點。在二叉樹中最重要的操作應當是遍歷。即按照某一順序訪問二叉樹中的每乙個節點。一般有如下幾種遍歷方法 1 前序遍歷,即先訪問根幾點,然後再訪問左子節點,最後訪問右子節點。2 中序遍歷,即先訪問左子節點,然後再訪問根節點,最後訪問右子節點。3 ...

資料結構之二叉樹

定義 滿足以下條件的就是樹 1.有且僅有乙個特定的稱為根root的結點。2.當n 1時,其餘結點可分為m m 0 個互不相交的有限集,其中每個集合本身又是乙個棵樹,並稱為根的子樹。樹是資料結構中一種常見的資料結構,比如我們排序中常見的二叉樹,紅黑樹等。最常見的是樹形表示法和廣義表表示法。樹的結構示意...