#define _crt_secure_no_warnings 1
#includeusing namespace std;
enum pointertag ; //列舉
其結構如下:
} //void prevorderthreading(); //前序
// void postorderthreading(); //後序
void inorderthreading() //用遞迴實現中序線索化二叉樹
void inorder() //遞迴列印
protected:
void _inorderthreading(node* root, node* prev) //遞迴實現線索化二叉樹
if (root->_right == null)
if (prev != null && prev->_righttag == thread)
prev = root;
if (root->_righttag == link)
_inorderthreading(root->_right, prev);
} void inorderthreading() /*用棧線索化二叉樹*/
cur = s.top();
s.pop();
if (cur->_left == null)
prev = cur;
if (cur->_right == null && !s.empty())
else
}} void _inorder(node* root) //遞迴列印線索化二叉樹 }
void inorder() //用棧列印
cut <_data>if (cur->_righttag == thread)
else if (cur->_right == link)
}} void inorderm() //迴圈列印
cout <_data>}
cur = cur->_right;
} }node* _root;
};void test()
; binarytreethdb(a, 8, '#');
b.inorderthreading();
b.inorder();
}int main()
本文出自 「零點時光」 部落格,請務必保留此出處 線索化二叉樹以及遍歷線索化二叉樹
1.線索二叉樹基本介紹 n個結點的二叉鍊錶中含有n 1 公式 2n n 1 n 1 個空指標域。利用二叉鍊錶中的空指標域,存放指向該結點在某種遍歷次序下的前驅和後繼結點的指標 這種附加的指標稱為 線索 這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binaryt...
線索化二叉樹
二叉樹是一種非線性結構,遍歷二叉樹幾乎都是通過遞迴或者用棧輔助實現非遞迴的遍歷。用二叉樹作為儲存結構時,取到乙個節點,只能獲取節點的左孩子和右孩子,不能直接得到節點的任一遍歷序列的前驅或者後繼。為了儲存這種在遍歷中需要的資訊,我們利用二叉樹中指向左右子樹的空指標來存放節點的前驅和後繼資訊.二叉樹的結...
線索化二叉樹
includeusing namespace std includeenum pointertag template struct binarytreenode thd templateclass binarytree thd binarytree thd const t a,size t size...