基於java的二叉樹資料結構實現

2021-08-28 23:56:05 字數 2002 閱讀 6454

首先我們要認識下,什麼是二叉樹,先看下百科

理解了二叉樹的結構,接下來我們就來分解一下二叉樹的組成。

首先乙個最簡易的二叉樹就是乙個節點,結構包含左節點、右節點,同時應該還包含自身儲存的資訊。

import lombok.data;

import lombok.tostring;

/**

* @classname: node

* @description: 樹節點 每個節點有3個基本屬性,即左右節點和節點儲存的資料

* @author m.k.

* @date 2023年10月12日

*/@data

@tostring

public class node

}

接下來,定義乙個樹,樹裡面只包含了乙個根節點,還有一些擴充套件性方法,比如插入、查詢之類的。

二叉樹的遍歷形式一般分為三種:

①、中序遍歷:左子樹——》根節點——》右子樹

②、前序遍歷:根節點——》左子樹——》右子樹

③、後序遍歷:左子樹——》右子樹——》根節點

例如:

先序遍歷的結果為:0  1   3  7  4  2  5  6

中序遍歷的結果為:7   3   1  4  0  5  2  6

後序遍歷的結果為:7   3   4  1  5  6  2  0

一般常用的是中序遍歷。

import lombok.data;

import lombok.tostring;

/** * @classname: binarytree

* @description: 二叉樹結構

* * 二叉樹中的節點都擁有兩個分叉

* * 二叉樹查詢主要分三種方式:

* * ①、中序遍歷:左子樹——》根節點——》右子樹

* * ②、前序遍歷:根節點——》左子樹——》右子樹

* * ③、後序遍歷:左子樹——》右子樹——》根節點

* @author m.k.

* @date 2023年10月12日

* */

@data

@tostring

public class binarytree

/*** @title: insert

* @description: 二叉樹插入

* @param: @param node

* @return: void

* @throws

*/public void insert(t data)

// 定位根節點

nodecurrent = getroot();

nodeparent = null;

while(null != current)

} else }}

}}

以上只實現了一下插入功能,to be continue...

test:

public class testbt 

system.out.println(sequence.tostring());

system.out.println(bt);}}

執行結果:

java資料結構 二叉樹

二叉樹是有限個數的集合,該集合或者為空,或者有乙個稱為根元素以及兩個不相交的,被分別稱為根的左子樹和右子樹的二叉樹組成。相關概念 深度 樹中結點的最大層數稱為樹的深度。結點的度 結點所擁有的子樹的個數稱為該結點的度。葉節點 度 0的節點。滿二叉樹 乙個二叉樹的每一層結點個數都達到了最大,即為滿二叉樹...

java資料結構 二叉樹

樹是一種特殊的資料結構,他可以用來描述有分支的結構是由乙個或者乙個以上的有限集合組成,具有兩個屬性 一是存在乙個特殊的節點,成為樹根 二是其餘節點分為n 0個互斥集合,t1,t2,t3,tn,每個集合成為子樹。常用屬性如下 1 根節點 根節點是乙個沒有雙親結點的結點,一棵樹中最多有乙個根節點。2 結...

java 資料結構 二叉樹遍歷

前言 前序,中序和後序遍歷都是深度優先遍歷的特例 深度優先和廣度優先是針對普通樹的,但是先序,中序和後序都是針對二叉樹的。使用遞迴和迭代 借用棧 實現二叉樹先序,中序,後序遍歷 definition for a binary tree node.public class treenode 1.二叉樹...