二叉樹的定義 前序遍歷 廣度遍歷

2021-06-08 10:47:15 字數 1474 閱讀 6197

二叉樹類的定義:

public class btree

public btree(t data, btreeleftchild, btreerightchild)

public t getdata()

public void setdata(t data)

public btreegetleftchild()

public void setleftchild(btreeleftchild)

public btreegetrightchild()

public void setrightchild(btreerightchild)

}

深度優先遍歷二叉樹

前序遍歷(dlr)的遞迴演算法:

若二叉樹為空,則演算法結束,否則:

訪問根結點;

前序遍歷根結點的左子樹;

前序遍歷根結點的右子樹。

廣度優先遍歷二叉樹。

廣度優先周遊二叉樹(層序遍歷)是用佇列來實現的,從二叉樹的第一層(根結點)開始,自上至下逐層遍歷;在同一層中,按照從左到右的順序對結點逐一訪問。

按照從根結點至葉結點、從左子樹至右子樹的次序訪問二叉樹的結點。演算法:

1初始化乙個佇列,並把根結點入列隊;

2當隊列為非空時,迴圈執行步驟3到步驟5,否則執行6;

3出佇列取得乙個結點,訪問該結點;

4若該結點的左子樹為非空,則將該結點的左子樹入佇列;

5若該結點的右子樹為非空,則將該結點的右子樹入佇列;

6結束。

public class btreelist 

/*** 建立一棵二叉樹

*/public void createbintree()

for(int i = 0; i < 64; i++)

else

if(rightchildindex < bintree.size())

else

} }

/***

* 廣度遍歷。

*/public void guangdulist(btreerootelement)

btreebintree = queue.pop();

system.out.println(bintree.getdata());

if(bintree.getleftchild() != null)

if(bintree.getrightchild() != null)

} }

/*** 前序遍歷。

*/public void preorder(btreebinnode)

system.out.println(binnode.getdata());

preorder(binnode.getleftchild());

preorder(binnode.getrightchild());

}}

前序遍歷二叉樹

題目 給定乙個二叉樹,返回它的 前序 遍歷。示例 輸入 1,null,2,3 輸出 1,2,3 方法一 遞迴 這是最容易想到且最容易實現的演算法。definition for a binary tree node.struct treenode treenode int x val x left n...

二叉樹的前序遍歷

二叉樹的前序遍歷 public class tree 建立二叉樹,返回根結點 param return public static tree createtree int else else else else return root 前序遍歷 param tree public static vo...

二叉樹的前序遍歷

1.問題描述 給出一棵二叉樹,返回其節點值的前序遍歷。樣例給出一棵二叉樹,1 2 3返回 1,2,3 2.解題思路 運用遞迴的思想,按先根在左子樹最後右子樹的思想將節點存到vector中。3.實現 definition of treenode class treenode class solutio...