#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的不包含重複英文本母 區分大小...