/**
* 二叉樹是資料元素間具有層次關係的非線性結構,而且二叉樹每個結點的兩個子樹有
* 左右之分。
* 對於給定的一棵二叉樹,其先序/中序/後序遍歷是唯一確定的,但給定一種遍歷,無法
* 確定一棵二叉樹。先序/後序反應父結點與孩子結點層次關係,中序反應兄弟結點間左右次序
* */
public class binarytree
/*有序樹求得最大值-最小值*/
public int getmax()
return node.value;
} public int getmin()
return node.value;
} /*得到二叉樹大小*/
public int getsize()
/*生成二叉樹*/
public void createbinarytree( int data)
} public void inserttree( int data ) else
} else
}}
} size++;
} /*先序遞迴遍歷*/
public void preorder(treenode node )
system.out.print( node.value + "--");
preorder(node.leftchild );
preorder(node.rightchild);
} /*中序遞迴遍歷*/
public void midorder(treenode node )
midorder(node.leftchild );
system.out.print( node.value + "--");
midorder(node.rightchild);
} /*後序遞迴遍歷*/
public void postorder(treenode node )
postorder(node.leftchild );
postorder(node.rightchild);
system.out.print( node.value + "--");
} /*查詢*/
public boolean search( int data ) else if ( data < node.value )
} else
}
} return result; }}
class treenode
}
測試結果:
public class binarytreetest ;
tree.createbinarytree(data);
system.out.println("先序遍歷:");
tree.preorder(tree.root);
system.out.println();
system.out.println("中序遍歷:");
tree.midorder(tree.root);
system.out.println();
system.out.println("後序遍歷:");
tree.postorder(tree.root);
system.out.println();
system.out.println("查詢結果:");
system.out.println(tree.search(16)==false?"不存在":"存在");
}}
控制台輸出:
先序遍歷:
2--1--4--3--6--9--8--7--11--
中序遍歷:
1--2--3--4--6--7--8--9--11--
後序遍歷:
1--3--7--8--11--9--6--4--2--
查詢結果:
不存在
Java 建立二叉樹並遍歷
public class binarytree public binarytree 遞迴建立二叉樹 param node param data public void buildtree node node,int data elseelse elseelse 前序遍歷 param node pub...
二叉樹的建立及遍歷
對任意的二叉樹的結點結構都可以設定為如下結構,leftchild指向該結點的左孩子,rightchild指向右孩子,data域記錄結點資訊,以此結點結構形成的二叉樹稱為二叉鍊錶。儲存結構型別為 typedef char elemtype typedef struct nodebitnode,bitr...
二叉樹的建立及遍歷
在資料處理的過程中,二叉樹的大小和形態不會發生劇烈變化的情況下,適合用陣列來表示二叉樹的抽象資料型別。完全二叉樹一般由陣列儲存表示,而一般二叉樹則是用鍊錶儲存表示的。本篇將採用二叉鏈的儲存方式對二叉樹進行儲存。二叉樹的建立,使用遞迴前序構建二叉樹。先建立根節點,在對左子樹進行建立,左子樹建立完成後,...