二叉樹
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個結點的二叉樹稱為滿二叉樹。說明 除葉子結點外的所有結點均有兩個子結點。所有葉子結點必須在同一層上。完全二叉樹 若設二叉樹的深度...