packagecom.dai.tree.threadedbinarytree;
public
class
threadedbinarytreedemo }//
定義threadedbinarytree 二叉樹
class
threadedbinarytree
//過載線索化二叉樹的方法
public
void
threadednodes()
//編寫對二叉樹中序線索化的**
/***
* @param
node:當前需要線索化的節點
*/public
void
threadednodes(heronode node)
//線索化左子樹
threadednodes(node.getleft());
if(node.getleft() == null
)
if(pre != null && pre.getright() == null
) pre =node;
//線索化右子樹
threadednodes(node.getright());
}//刪除節點
public
void delnode(int
no)
else
}else
}//前序遍歷
public
void
preorder()
else
}//中序遍歷
public
void
infixorder()
else
}//後序遍歷
public
void
postorder()
else
}//前序遍歷查詢
public heronode preordersearch(int
no)
else
}//中序遍歷查詢
public heronode infixordersearch(int
no)
else
}//後序遍歷查詢
public heronode postordersearch(int
no)
else
}}//
節點類class
heronode
public
intgetlefttype()
public
void setlefttype(int
lefttype)
public
intgetrighttype()
public
void setrighttype(int
righttype)
public
intgetno()
public
void setno(int
no)
public
string getname()
public
void
setname(string name)
public
heronode getleft()
public
void
setleft(heronode left)
public
heronode getright()
public
void
setright(heronode right)
@override
public
string tostring()
//遞迴刪除節點
//葉子節點則刪除,非葉子節點,則要刪除子樹
public
void delnode(int
no)
if(this.right != null && this.right.no ==no)
if(this.left != null
)
if(this.right != null
) }
//編寫前序遍歷的方法
public
void
preorder()
//遞迴向右前序遍歷
if(this.right!=null
)
}//中序遍歷
public
void
infixorder()
system.out.println(
this
);
if(this.right != null
) }
//後續遍歷
public
void
postorder()
if(this.right != null
) system.out.println(
this
); }
//前序遍歷查詢
public heronode preordersearch(int
no)
heronode resnode =null
;
if(this.left != null
)
if(resnode != null
)
if(this.right != null
)
return
resnode;
}//中序遍歷查詢
public heronode infixordersearch(int
no)
if(resnode != null
)
if(this.no==no)
if(this.right != null
)
return
resnode;
}//後序遍歷查詢
public heronode postordersearch(int
no)
if(resnode != null
)
if(this.right != null
)
if(resnode != null
)
if(this.no==no)
return
resnode;
}}
線索化二叉樹以及遍歷線索化二叉樹
1.線索二叉樹基本介紹 n個結點的二叉鍊錶中含有n 1 公式 2n n 1 n 1 個空指標域。利用二叉鍊錶中的空指標域,存放指向該結點在某種遍歷次序下的前驅和後繼結點的指標 這種附加的指標稱為 線索 這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binaryt...
線索化二叉樹
define crt secure no warnings 1 includeusing namespace std enum pointertag 列舉 其結構如下 void prevorderthreading 前序 void postorderthreading 後序 void inorder...
線索化二叉樹
二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞迴或者用棧輔助實現非遞迴的遍歷。用二叉樹作為儲存結構時,取到乙個節點,只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的前驅或者後繼。為了儲存這種在遍歷中需要的資訊,我們利用二叉樹中指向左右子樹的空指標來存放節點的前驅和後繼資訊.二叉樹的結...