構造樹如下:
其中二叉樹節點類
/** 二叉樹節點 */
public
class
btnode
public
btnode(
char
key, btnode left, btnode right)
public
char
getkey()
public
void
setkey(
char
key)
public
btnode getleft()
public
void
setleft(btnode left)
public
btnode getright()
public
void
setright(btnode right) }
遍歷二叉樹
/** 二叉樹遍歷 */
public
class
bintree
public
btnode getroot()
/** 構造樹 */
public
static
btnode init()
/** 訪問節點 */
public
static
void
visit(btnode p)
/** 遞迴實現前序遍歷 */
protected
static
void
preorder(btnode p)
}/** 遞迴實現中序遍歷 */
protected
static
void
inorder(btnode p)
}/** 遞迴實現後序遍歷 */
protected
static
void
postorder(btnode p)
}/** 非遞迴實現前序遍歷 */
protected
static
void
iterativepreorder(btnode p) }}
/** 非遞迴實現後序遍歷 */
protected
static
void
iterativepostorder(btnode p)
// 處理右子
stack.push(p);
p = p.getright();}}
/** 非遞迴實現中序遍歷 */
protected
static
void
iterativeinorder(btnode p)
p = stack.pop();
while
(!stack.empty() && p.getright() ==
null
) visit(p);
if(!stack.empty())
p = stack.pop();
else
p =
null;}
}public
static
void
main(string args) }
輸出結果
pre-order:h d b a c g f e
in-order:b a d c h g e f
post-order:a b c d e f g h
pre-order:h d b a c g f e
in-order:b a d c h g e f
post-order:a b c d e f g h
java 二叉樹實現演算法
package zxx.new 二叉樹演算法實現 author zhaoxin version public class binarytree public binarytree object objects public boolean insert object o else else if c...
Java 二叉樹演算法
二叉樹演算法的排序規則 1 選擇第乙個元素作為根節點 2 之後如果元素大於根節點放在右子樹,如果元素小於根節點,則放在左子樹 3 最後按照中序遍歷的方式進行輸出,則可以得到排序的結果 左 根 右 二叉樹演算法的核心類,此類只提供了新增和列印輸出的方法 package com.lym.binarytr...
二叉樹演算法(java)
為什麼實用二叉樹 一,在有序陣列中插入刪除資料太慢 1插入或者刪除一條資料會移動後面的所有資料 二,在鍊錶中查詢資料太慢 2查詢只能從頭或者尾部一條一條的找 用樹解決問題 有沒有一種插入和刪除像鍊錶那麼快,查詢可以向有序陣列一樣查得快那樣就好了。數實現了這些特點,稱為了最有意思的資料結構之一 樹的術...