C 實現二叉樹

2021-06-01 14:09:40 字數 2438 閱讀 3820

其中的 linkstack.h 和 linkqueue 分別在 以下兩篇博文裡:

linkstack

、linkqueue

#include #include "linkstack.h"

#include "linkqueue.h"

using namespace std;

//定義節點

templatestruct node

//建構函式,無引數

//建構函式,帶引數

node(const t &x,node *l=null,node *r=null):data(x),left(l),right(r){}

~node(){} //析構函式

};//定義二叉樹

templateclass bt

;/*二叉樹的實現*/

//構造空二叉樹

template bt::bt()

//構造以資料值為x的結點為根結點的二叉樹

template bt::bt(const t &x)

//構造以p為根結點的二叉樹

template bt::bt(const node*p)

//返回根結點位址

template node* bt::getroot()

//建立乙個以資料值為x的結點為根結點,以lt為左子樹、rt為右子樹的二叉樹

template void bt::maketree(const t &x,bt <,bt &rt)

//刪除左子樹

template void bt::delleft()

}//刪除右子樹

template void bt::delright()

}//判斷是否為空樹

template bool bt::empty() const

//刪除二叉樹

template void bt::clear()

}//刪除以t為根結點的二叉樹

template void bt::clear(node*t)

}//求二叉樹的規模

template int bt::size() const

//求以t為根結點的二叉樹的規模

template int bt::size(node*t) const

//求二叉樹的高度

template int bt::height() const

//求以t為根結點的二叉樹的高度

template int bt::height(node*t) const

return -1;

}//求二叉樹葉子結點個數

template int bt::leafcount() const

}return cnt;

}//前序遍歷二叉樹

template void bt::preorder() const

*///非遞迴實現:

if(root)}}

}//中序遍歷二叉樹

template void bt::midorder() const

*///非遞迴實現:

if(root)

while(!stack.empty())}}

}}

}//後續遍歷二叉樹

template void bt::postorder() const

*///非遞迴實現:

if(root)

node*tmp=null;

bool flag=1;

while(!stack.empty()&&flag)

else

}}while(!stack.empty());

}}//層次遍歷二叉樹

template void bt::levelorder() const

}}//判斷是否為完全二叉樹

template bool bt::iscompbt() const

}else

else if(!tmp->left&&tmp->right)

else

}queue.dequeue();

}while(!queue.empty())

queue.dequeue();

return judge;

}//建立二叉樹,輸入flag表示為空

template void bt::createtree(t flag)

}cout<<"\n建立完成!\n\n";

}//複製二叉樹

template void bt::copytree(bt &tree)

//複製以t為根結點的二叉樹為以r為根結點的新二叉樹

template void bt::copytree(node*&r,node*t)

else r=null;

}//析構函式

template bt::~bt()

二叉樹C 實現

最近整理原來的一些 腦子有點不好使,還是記下來吧。binary tree.h,遍歷包含了遞迴和非遞迴兩種,層次遍歷 ifndef binary tree h define binary tree h templatestruct binode templateclass bitree endif b...

C 實現二叉樹

實現 pragma once include include include using namespace std templatestruct bintreenode templateclass binarytree binarytree char str 根據先序字串行建立二叉樹 binary...

C 二叉樹實現

二叉樹節點類 二叉樹結點類bintreenode宣告 templateclass bintreenode bintreenode getleft bintreenode getright t getdata void setleft bintreenode left void setright bi...