二叉樹淺解

2021-09-01 19:10:27 字數 2619 閱讀 9251

二叉樹

1、定義:樹是一種重要的非線性資料結構,直觀地看,它是資料元素(在樹中稱為結點)按分支關係組織起來的結構。

二叉樹是每個節點最多有兩個子樹的有序樹。通常子樹被稱作「左子樹」和「右子樹」。

鍊錶是一種特殊的樹。

2、構建規則:左子樹《右子樹

3、組成元素:根節點 、邊、左(右)子樹

二叉樹的遍歷方式

1、前序 、先序 :根節點 -->左-->右 訪問根結點的操作發生在遍歷其左右子樹之前。

2、中序 :左 -->根節點-->右 訪問根結點的操作發生在遍歷其左右子樹之中(間)。

3、後序 :左 -->右-->根節點 訪問根結點的操作發生在遍歷其左右子樹之後。

4、層次

5、 6、廣度

1.中序遍歷的遞迴演算法定義:

若二叉樹非空,則依次執行如下操作:

⑴遍歷左子樹;

⑵訪問根結點;

⑶遍歷右子樹。

2.先序遍歷的遞迴演算法定義:

若二叉樹非空,則依次執行如下操作:

⑴ 訪問根結點;

⑵ 遍歷左子樹;

⑶ 遍歷右子樹。

3.後序遍歷得遞迴演算法定義:

若二叉樹非空,則依次執行如下操作:

⑴遍歷左子樹;

⑵遍歷右子樹;

⑶訪問根結點。

練習:1、構建樹結構

2、分別實現 前、中、後序的遍歷

結點類:

public class node

// 設定節點處的資料

public void setdate(object date)

// 返回左節點

public node getleft()

// 設定左節點

public void setleft(node left)

// 返回右節點

public node getright()

// 設定右節點

public void setright(node right)

// 建構函式

public node()

// 建構函式

public node(object date)

// 建構函式

public node(object date, node left, node right)

}

樹類:

public class nodetree

else

}/**

* 查詢節點新增位置並新增的方法

* @param node1 根節點

* @param node2 要新增的節點

*/public void querynode1(node node1,node node2)

else

}else

else if(node1.getright()==null)

else}}

/*** 前序遍歷

* @param node 根節點

*/public void nlr(node node)

// 訪問右子樹

if(node.getright()!=null)

}/**

* 中序遍歷

* @param node 根節點

*/public void lnr(node node)

else

// 遍歷根節點

if(node.getleft()!=null)

// 遍歷右子樹

if(node.getright()!=null)

}/**

* 後序遍歷

* @param node 根節點

*/public void lrn(node node)

else

// 遍歷右樹

if(node.getright()!=null)

// 遍歷根節點

if(node.getleft()!=null)

}public void delete(node node)

// 訪問右子樹

if(node.getright()!=null)} }

主函式:

public class manager

// 前序遍歷

system.out.println("前序遍歷輸出~~~~~~~~~~~");

nt.nlr(node[0]);

system.out.println();

// 中序遍歷

// system.out.println("中序遍歷輸出~~~~~~~~~~~");

// nt.lnr(node[0]);

// system.out.println();

// 後序遍歷

// system.out.println("後序遍歷輸出~~~~~~~~~~~");

// nt.lrn(node[0]);

// system.out.println();

// nt.delete(node[3]);}}

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹,完全二叉樹,滿二叉樹

二叉樹 是n n 0 個結點的有限集合,它或者是空樹 n 0 或者是由乙個根結點及兩顆互不相交的 分別稱為左子樹和右子樹的二叉樹所組成。滿二叉樹 一顆深度為k且有2 k 1個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...