重點:樹的廣度操作
二叉樹的廣度優先插入借助佇列來實現
一、對二叉樹的認識:二叉樹是每個結點最多有兩個子樹的樹結構。
二、本文主要是對樹的廣度優先插入進行操作。
三、原理解析:
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實現。其資料來源的資料結構是一種樹狀結構,如下圖 現在有兩種方法來遍歷這種資料結構。深度優先搜尋 其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個節點只能訪問一次。舉例說明之 據上圖,我們從...