#include
#include
using
namespace std;
//------------- 非遞迴後續遍歷的標誌位-------------------------
enum tags
;//--------------提前宣告非遞迴後續遍歷的棧類--------------------
template
<
class
t>
class
stackelement
;//--------------提前宣告二叉樹類模板----------------------------
template
<
class
t>
class
binarytree
;//--------------二叉樹結點類------------------------------------
template
<
class
t>
class
binarytreenode
;//--------------非遞迴後續遍歷的棧類-----------------------------
template
<
class
t>
class
stackelement
;//--------------二叉樹類-----------------------------------------
template
<
class
t>
class
binarytree}}
;template
<
class
t>
binarytree
::binarytree()
template
<
class
t>
void binarytree
::creatbinarytree
(binarytreenode
*&rt)
else
}template
<
class
t>
void binarytree
::preorder
(binarytreenode
*rt)
}template
<
class
t>
void binarytree
::inorder
(binarytreenode
*rt)
}template
<
class
t>
void binarytree
::postorder
(binarytreenode
*rt)
}template
<
class
t>
void binarytree
::preorderwithoutrecusion()
}}template
<
class
t>
void binarytree
::inorderwithoutrecusion()
else}}
template
<
class
t>
void binarytree
::postorderwithoutrecusion()
element = astack.
top();
astack.
pop();
pointer = element.pointer;
if(element.tag == left)
else}}
intmain()
本文因為要遍歷的二叉樹深度比較大,在遍歷的時候會使編譯棧空間不夠發生錯誤,所以寫了個非遞迴遍歷,而且非遞迴的遍歷速度也相對普通遞迴的遍歷速度快很多很多,我們在用c++語言的時候不就是為了速度嗎,要不然還不如用其他語言這樣開發東西還比較快而且省事。 二叉樹鏈式儲存的C實現
在實現二叉樹的鏈式儲存的過程中,我遇到了一些問題,感到對遞迴的理解還不夠深入。另外,中有一處必須使用全域性變數做陣列索引,還在研究其中的原因,已完成,現在貼在部落格中供參考 include include include include define maxsize 100 define ok 1 ...
C 實現鏈式儲存線索二叉樹
一顆線索二叉樹 根據下圖進行節點的建立 如下 因為普通二叉樹有空指標域,所以我們可以利用這些空指標來線索化 1 二叉樹的線索化,實質上就是遍歷一棵二叉樹,在遍歷過程中,訪問節點的操作是檢查當前結點的左右指標域是否為空,如果為空,即將他們改為前驅節點或後繼節點的線索。為記錄前驅節點,定義pre為全域性...
二叉樹的模板類
同樣的問題,當時忘了衛星資料的模板了 二叉樹的模板類 include using namespace std template struct node template class tree class template tree class tree class template 這裡用的是指標的...