c 實現鏈式二叉樹類模板

2021-10-23 07:24:54 字數 2133 閱讀 5486

#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 這裡用的是指標的...