關於二叉樹的概念就不必多說了,下面看題目:
用java/C++語言寫一個二叉樹結構,並寫出遍歷方法。
好了,就上面的題目,來分析一下,二叉樹的遍歷有什麼方法?
二叉樹的遍歷主要有三種方法,分別是:先序遍歷,中序遍歷,後序遍歷。它們各自的特點如下:
先序遍歷二叉樹
若二叉樹爲空,則空操作,否則
1.訪問根結點;
2.先序遍歷左子樹;
3.先序遍歷右子樹。
先序遍歷二叉樹:先訪問根節點,然後再遍歷左子樹,遍歷完左子樹後,,再遍歷右子樹。
中序遍歷二叉樹
若二叉樹爲空,則空操作,否則
1.中序遍歷左子樹;
2.訪問根結點;
3.中序遍歷右子樹。
中序遍歷二叉樹:先遍歷左子樹,再遍歷根節點,後遍歷右子樹
後序遍歷二叉樹
若二叉樹爲空,則空操作,否則
1.後序遍歷左子樹;
2.後序遍歷右子樹;
3.訪問根結點。
好了,遍歷二叉樹的方法大致我們已經知道了,那下面我們用java代碼寫出一顆二叉樹。
package binary_tree;
class BinaryTree
{
public int data;
public BinaryTree left;
public BinaryTree right;
public BinaryTree(int data){
this.data=data;
left=null;
right=null;
}
public void insert(BinaryTree root,int data)
{
if(data>root.data){ //說明該節點比根節點大,要放到樹的右邊
if(root.right==null)
{
//如果該節點右邊沒有節點,則創建右邊節點
root.right=new BinaryTree(data);
}else{
this.insert(root.right,data);
}
}else{ //說明該節點比根節點小,要放到樹的左邊
if(root.left==null)
{
//如果該節點左邊還沒有節點,則創建左邊節點
root.left=new BinaryTree(data);
}else{
this.insert(root.left,data);
}
}
}
}
針對上面的二叉樹,我們寫一個類,該類中有三個方法,一個是先序遍歷的方法,一個是中序遍歷的方法,一個是後序遍歷的方法。好了,代碼如下:
package binary_tree;
public class ProcelTree
{
public static void preTree(BinaryTree root)
{
if(root!=null)
{
System.out.print(root.data+"--");
preTree(root.left);
preTree(root.right);
}
}
public static void midTree(BinaryTree root)
{
if(root!=null)
{
preTree(root.left);
System.out.print(root.data+"--");
preTree(root.right);
}
}
public static void postTree(BinaryTree root)
{
if(root!=null)
{
preTree(root.left);
preTree(root.right);
System.out.print(root.data+"--");
}
}
public static void main(String[] args) {
int arr[]={9,78,100,105,8,1,56,47,80,23};
BinaryTree root=new BinaryTree(arr[0]);
for(int i=1;i<arr.length;i++){
root.insert(root, arr[i]);
}
System.out.println("----------先序遍歷----------");
preTree(root);
System.out.println();
System.out.println("----------中序遍歷----------");
midTree(root);
System.out.println();
System.out.println("----------後序遍歷----------");
postTree(root);
}
}
運行結果如下:
----------前序遍歷----------
9--8--1--78--56--47--23--100--80--105--
----------中序遍歷----------
8--1--9--78--56--47--23--100--80--105--
----------後序遍歷----------
8--1--78--56--47--23--100--80--105--9--
根據數據繪製的二叉樹:
到這裏,二叉樹的遍歷分析完了,有沒有想親自動手?趕快行動吧!