二叉樹類的定義:
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...