樹的廣度優先插入以及廣度優先遍歷

2021-10-02 02:00:27 字數 2065 閱讀 4340

重點:樹的廣度操作

二叉樹的廣度優先插入借助佇列來實現

一、對二叉樹的認識:二叉樹是每個結點最多有兩個子樹的樹結構。

二、本文主要是對樹的廣度優先插入進行操作。

三、原理解析:

public

class

cilquedemo

arr = arrnew;

top = top -start;

start =0;

}}public t get()

t result = arr[start % arr.length]

; start++;if

(top - start < arr.length/4)

t arrnew =

(t)new

object

[len]

;for

(int i =

0;i < arrnew.length;i++

) arr = arrnew;

top = top -start;

start =0;

}return result;

}}

2、建立二叉樹的結點結構:

結點結構如下:

**實現:

public

class

tree

}

3、建立過程:(給定陣列,建立二叉樹)

(1)建立根節點,將陣列的第乙個值賦給根結點的value。

tree root =

newtree()

; root.value = arr[0]

;

(2)建立佇列,並將根結點存到佇列中

(3)進行廣度優先插入:

插入使用for迴圈,進入迴圈第一步先將佇列中的第乙個出隊,然後依次將陣列中的元素賦給結點的value,再插入過程中需要建立左右子樹,分別由上一結點的left、right指向,並依次進入佇列。

(4)樹的廣度優先遍歷:

借助佇列實現。
首先將插入好了的二叉樹的根結點入隊,根據對列是否為空進行迴圈,在遍歷的時候當左子樹不為空的時候,將左子樹入隊,右子樹同等操作。

(5)**實現:

public

class

test

;//廣度優先插入

tree root =

newtree()

; root.value = arr[0]

; cilquedemo

queue =

newcilquedemo

(); queue.

push

(root)

;for

(int i =

1; i < arr.length;

)else

i +=2;

} system.out.

println

(root)

;viewtree

(root)

;//遍歷

}//廣度優先遍歷

public

static

void

viewtree

(tree root)

system.out.

print

(newtree.value +

" ");if

(newtree.left!=null)

if(newtree.right!=null)}}

}

通過以上操作便可實現樹的廣度優先插入以及遍歷。

樹的廣度優先插入和廣度優先遍歷

樹的廣度優先遍歷 從佇列中取出的每乙個結點,當它完成自己的使命之後 指向新的結點,也就是它的左孩子和右孩子 就會被自動 package com.bdrjxy.web public class test tree root new tree 定義樹的根結點 root.value arr 0 賦值 qu...

深度優先 廣度優先

父類定義 class people def init self,name,age,weight self.name name self.age age self.weight weight defspeak self print s 說 我 d 歲。self.name,self.age 單繼承示例 ...

樹搜尋 深度優先和廣度優先

在android開發中,有時候會遇到多層級列表的顯示,如下圖,可用recyclerview實現。其資料來源的資料結構是一種樹狀結構,如下圖 現在有兩種方法來遍歷這種資料結構。深度優先搜尋 其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次。舉例說明之 據上圖,我們從...