定義乙個類,用來當做二叉樹的節點,也可以用內部類
package datestructure;
public
class
tnode
}
下面是二叉樹的實現:比較難的是刪除,仔細琢磨。
package datestructure;
public
class
ithree
else
if(key < temp.date)
else
}return null;
}/**
* 插入新節點
* * 要插入節點,必須先找到插入的位置。 與查詢操作相似,由於二叉搜尋樹的特殊性, 待插入的節點也需要從根節點開始進行比較,
* 小於根節點則與根節點左子樹比較,反之則與右子樹比較, 直到左子樹為空或右子樹為空,則插入到相應為空的位置, 在比較的過程中要注意儲存父節點的資訊 及
* 待插入的位置是父節點的左子樹還是右子樹,才能插入到正確的位置。
* * @param key
* @return
*/public
boolean
insert
(int key)
tnode prenode = null;
tnode temp = root;
while
(temp != null)
}else}}
return
false;}
/** * 遍歷二叉樹
* * @param key
* @return
*/// 先序遍歷
public
void
infixorder
(tnode current)
}// 中序遍歷
public
void
preorder
(tnode current)
}// 後序遍歷
public
void
postorder
(tnode current)
}/**
* 查詢最值
* * 要找最小值,先找根的左節點, 然後一直找這個左節點的左節點, 直到找到沒有左節點的節點,那麼這個節點就是最小值。 同理要找最大值,一直找根節點的右節點,
* 直到沒有右節點,則就是最大值
* * @return
*/// 查詢最大值
public tnode findmax()
}return prenode;
}// 查詢最小值
public tnode findmin()
}return prenode;
}/**
* 刪除節點 刪除節點是二叉搜尋樹中最複雜的操作,
* 刪除的節點有三種情況,前兩種比較簡單,但是第三種卻很複雜。
* 1、該節點是葉節點(沒有子節點)
* 2、該節點有乙個子節點
* 3、該節點有兩個子節點
*/public
boolean
delete
(int key)
else
if(nextnode == null)
}//該節點是葉子結點
if(nextnode.leftchild == null && nextnode.rightchild == null)
else
return
true
;//該節點只有右結點
}else
if(nextnode.leftchild == null && nextnode.rightchild != null)
else
return
true
;//該節點只有左節點
}else
if(nextnode.leftchild != null && nextnode.rightchild == null)
else
return
true
;//該節點有兩個子節點
}else
else
successor.leftchild = nextnode.leftchild;
return
true;}
}//找到刪除節點的中序後繼元素
public tnode getsuccessor
(tnode delnode)
//後繼節點不是刪除節點的右子節點,將後繼節點替換刪除節點
if(successor != delnode.rightchild)
return successor;
}// other method......
public
static
void
main
(string[
] args)
}
二叉樹 排序二叉樹的簡單實現
二叉樹 排序二叉樹 include using namespace std 二叉樹的節點 date 資料 left 指向二叉樹的左子樹 right 指向二叉樹的右子樹 template struct node template class btree public btree root null c...
二叉樹實現
include include include include define maxsize 100 define ok 1 define error 0 define true 1 define false 0 typedef int status typedef int telemtype ty...
二叉樹實現
課內最近學了二叉樹,參考書上的 做了二叉樹的實現,尚不完善,還有很多地方不明白。二叉樹實現。define maxsize 100 include using namespace std 定義二叉樹節點 class btnode void createbt btnode bt,char str voi...