線索二叉樹

2022-08-26 09:12:11 字數 2296 閱讀 9604

參考:

線索二叉樹節點:

package demo7;

public class threadednode

//設定左兒子

public void setleftnode(threadednode leftnode)

//設定右兒子

public void setrightnode(threadednode rightnode)

//前序遍歷

public void frontshow()

//右節點

if(rightnode!=null)

} //中序遍歷

public void midshow()

//當前節點

system.out.println(value);

//右子節點

if(rightnode!=null)

} //後序遍歷

public void aftershow()

//右子節點

if(rightnode!=null)

//當前節點

system.out.println(value);

} //前序查詢

public threadednode frontsearch(int i) else

//如果不為空,說明在左兒子中已經找到

if(target!=null)

//查詢右兒子

if(rightnode!=null)

} return target; }

//刪除乙個子樹

public void delete(int i)

//判斷右兒子

if(parent.rightnode!=null&&parent.rightnode.value==i)

//遞迴檢查並刪除左兒子

parent=leftnode;

if(parent!=null)

//遞迴檢查並刪除右兒子

parent=rightnode;

if(parent!=null)

}}

線索二叉樹:

package demo7;

public class threadedbinarytree

//列印當前節點的值

system.out.println(node.value);

//如果當前節點的右指標指向的是後繼節點,可能後繼節點還有後繼節點、

while(node.righttype==1)

//替換遍歷的節點

node=node.rightnode;

} }//設定根節點

public void setroot(threadednode root)

//中序線索化二叉樹

public void threadnodes()

public void threadnodes(threadednode node)

//處理左子樹

threadnodes(node.leftnode);

//處理前驅節點

if(node.leftnode==null)

//處理前驅的右指標,如果前驅節點的右指標是null(沒有指下右子樹)

if(pre!=null&&pre.rightnode==null)

//每處理乙個節點,當前節點是下乙個節點的前驅節點

pre=node;

//處理右子樹

threadnodes(node.rightnode); }

//獲取根節點

public threadednode getroot()

//前序遍歷

public void frontshow()

} //中序遍歷

public void midshow()

} //後序遍歷

public void aftershow()

} //前序查詢

public threadednode frontsearch(int i)

//刪除子樹

public void delete(int i) else }

}

測試線索二叉樹:

package demo7;

public class testthreadedbinarytree

}

線索二叉樹

當用二叉鍊錶作為二叉樹的儲存結構時,因為每個結點中只有指向其左 右兒子結點的指標,所以從任一結點出發只能直接找到該結點的左 右兒子。在一般情況下靠它無法直接找到該結點在某種遍歷序下的前驅和後繼結點。如果在每個結點中增加指向其前驅和後繼結點的指標,將降低儲存空間的效率。我們可以證明 在n個結點的二叉鍊...

線索二叉樹

1.線索二叉樹結構和操作定義 threadbintree.h 功能 線索標誌域所有值 typedef enumnodeflag 功能 線索二叉樹結構體 typedef struct threadtreethreadbintree 前驅節點指標 threadbintree previous null ...

線索二叉樹

原始碼 中序線索二叉樹 author 菜鳥 version 2014.7.23 include include include typedef char datatype using namespace std 定義線索二叉樹的結構體 typedef struct nodethreadbitreen...