二叉樹C 實現資料結構實驗

2021-07-24 05:21:20 字數 1607 閱讀 8010

#include #include #include #include using namespace std;

templatestruct binode //二叉數節點

;template//模板類

class bitree

;templatebitree::bitree()

templatebitree::~bitree(){}

templatebinode* bitree::create() //1. 按先序序列構造一棵二叉鍊錶表示的二叉樹t;

return pnode;

}templatebinode* bitree::getroot()

templatevoid bitree::preorder(binode* node)

}templatevoid bitree::inorder(binode* node)

}templatevoid bitree::postorder(binode* node)

}templatevoid bitree::levelorder(binode* node)

}//先序遍歷非遞迴需要借助stack s來實現,模擬遞迴呼叫

//總的迴圈邊界是當前節點不為空或者stack不空,

templatevoid bitree::preordernonrec(binode* node)

if (!s.empty())//這裡執行r

}}templatevoid bitree::inordernonrec(binode* node)

if (!s.empty())//這裡執行vr

}}templatevoid bitree::postordernonrec(binode* node)

else

}}templateint bitree::leafnum(binode* node)

templateint bitree::treedepth(binode* node)

templateint bitree::nodesnum(binode* node)

templatevoid bitree::swapchild(binode* node)}/*

樣例輸入:

abc de g f ↙

樣例輸出:

先序建立一棵二叉樹,請輸入節點的值:abc de g f

建立完畢.

先序:abcdegf

中序:cbegdfa

後序:cgefdba

層序:abcdefg

選做題1:採用非遞迴演算法實現二叉樹遍歷

先序:abcdegf

中序:cbegdfa

後序:cgefdba

選做題2:求二叉樹的深度/結點數目/葉結點數目

treedepth is 5

nodesnum is 7

leafnum is 3

選做題3:將二叉樹每個結點的左右子樹交換位置。

交換完畢.

先序:abdfegc

中序:afdgebc

後序:fgedcba

層序:abdcfeg

*/int main()

資料結構C 實現 二叉樹

adt btree btnode const t x btnode const t x,btnode l,btnode r 三個資料成員 t element btnode lchild,rchild 二叉樹類包含唯一的資料成員,它是指向乙個二叉鍊錶根結點的指標root 二叉樹類 先建立二叉樹結點類 ...

C 資料結構(樹 二叉樹)

樹的定義 樹是你 n 0 個節點的有限集t t為空是空樹 非空樹具有兩個條件。有且僅有乙個根節點作為樹根 其餘節點可分為m個互不相交的子集t1,tm。其中每乙個子集本手又是一顆樹,稱其為跟節點的子樹。遞迴思想 樹的二元組表示 t d,r d 樹t中的節點集合,r 樹中的節點關係。二元組另外一種表示 ...

資料結構實驗之二叉樹四 還原二叉樹

time limit 1000ms memory limit 65536k 給定一棵二叉樹的先序遍歷序列和中序遍歷序列,要求計算該二叉樹的高度。輸入資料有多組,每組資料第一行輸入1個正整數n 1 n 50 為樹中結點總數,隨後2行先後給出先序和中序遍歷序列,均是長度為n的不包含重複英文本母 區分大小...