二叉樹遍歷

關於二叉樹的概念就不必多說了,下面看題目:

用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--


根據數據繪製的二叉樹:



到這裏,二叉樹的遍歷分析完了,有沒有想親自動手?趕快行動吧!


發佈了66 篇原創文章 · 獲贊 13 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章