二叉樹的廣度優先插入需要使用佇列的某些特性,佇列的先入先出特性。
這裡先說一下迴圈佇列的實現。
**如下
public class queue }
需要注意的是,迴圈佇列中的end和start的關於,可以將陣列想象成乙個環狀,當end與start的差值等於陣列的長度,就說明陣列該擴容了。
說完佇列,二叉樹的廣度優先插入就是應用了佇列的特性。
package test;
public class tree
tree left;
tree right;
public static void main(string args)
;tree root=new tree();
root.data=arr[0];
queuequeue=new queue();
queue.add(root);
for(int i=1;ii=i+2;
}system.out.println(root);
}}
廣度優先遍歷二叉樹
同學電面被問到乙個問題 如何獲得完全二叉樹的最後乙個節點?二叉樹以鍊錶的形式儲存。沒想到合適的辦法,用廣度遍歷吧,最後乙個節點就是了,如下 include include 樹節點的定義 struct tnode 佇列節點的定義 struct qnode 佇列的定義 struct queue 初始化佇...
二叉樹 廣度優先遍歷
廣度優先遍歷從最底層 或者最高層 開始,向下 或向上 逐層訪問每個節點,在每一層次上,從左到右 或從右到左 訪問每個節點。這樣就有4種訪問方式。當使用佇列時,這種遍歷方式的實現相當直接。假設從上到下 從左到右進行進行廣度優先遍歷。在訪問了乙個節點後,它的子節點 如果有的話 就放到佇列的末尾,然後訪問...
二叉樹的廣度優先搜尋
使用兩個佇列存放節點元素,佇列1用來存放未遍歷過的節點,佇列2用來存放遍歷的節點。具體步驟 步驟 1 把根結點,放到佇列1中。見圖 a 2 彈出佇列1的中的隊首元素,被彈出的元素放到佇列2中。若該隊首元素有子節點,按從到右的順序加入到佇列1中。見圖 b 3 重複步驟2 見圖 c 圖 h 4 整個過程...