重點需要處理的就是第乙個訪問節點的前驅節點以及最後乙個訪問節點的後繼節點,只需要建立乙個新節點作為中介就行!
**:
#include
using
namespace std;
typedef
struct bitnode
;bitnode* pre =
null
;//後面第一次線索化的時候必須給初值
string s;
void
creatbitree
(bitnode*
& p)
//引數傳指標引用
else
}void
inorder
(bitnode* p)
//中序遍歷線索化
if(pre &&
!(pre-
>rchild)
)//看看上乙個訪問節點是否有右孩子,沒有右孩子的話設定上乙個訪問節點的後繼節點為當前節點
pre = p;
//設定p為上一次訪問的節點
inorder
(p->rchild);}
}void
headorder
(bitnode*
& t, bitnode* p)
//p是二叉樹,t是頭節點
else
//不為空就把新節點的左孩子指向該二叉樹的頭節點
}int
main()
二叉樹的線索化 線索二叉樹的遍歷(中序)
二叉樹的線索化 對於n個節點的二叉樹,在二叉儲存鍊錶中有n 1個空鏈域,利用這些空鏈域存放某種遍歷次序下的指向該節點的前驅和後繼的指標,這些指標成為線索,被線索的二叉樹成為線索二叉樹。這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binarytree 根據線索性...
C 中序線索化二叉樹及其遍歷
二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞迴或者用棧輔助實現非遞迴的遍歷。用二叉樹作為儲存結構時,取到乙個節點,只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的前驅或者後繼。為了儲存這種在遍歷中需要的資訊,我們利用二叉樹中指向左右子樹的空指標來存放節點的前驅和後繼資訊。void ...
線索化二叉樹的中序遍歷
實現 package tree.threadedbinarytree public class threadedbinarytree hreonode root newhreonode 1 宋江 hreonode node2 newhreonode 3 吳用 hreonode node3 newhr...