開始之前,先回憶一下二叉樹的三種遍歷方式。
這棵樹的前序遍歷為:abdeghcf
中序遍歷:左子樹—> 根結點 —> 右子樹(在中間遍歷根節點)
這棵樹的中序遍歷為:dbgehacf
後序遍歷:左子樹 —> 右子樹 —> 根結點(最後遍歷根節點)
這棵樹的後序遍歷為:dghebfca
具體參考這位博主吧`
// created by xiaobinbin on 2020/3/17.
//強調的是,引用很關鍵,品,你細品~
#include
using
namespace std;
template
<
class
t>
class
treenode
//日常好習慣,隨手建構函式一下。在涉及到有指標的成員時,最好重寫拷貝建構函式,=過載,防止多重析構};
//中序遍歷
template
<
class
t>
void
treeinorder
(treenode
* bt)
}//查詢,返回treenode*
template
<
class
t>
treenode
*search
(treenode
* bt,t k,treenode
*&p)
//注意這裡的引用呦,這裡的p主要就是記錄最後查詢的位置
return
null;}
//插入
template
<
class
t>
void
treeinsert
(treenode
*&bt,t k)
if(p&&k
>key)
p->lchild=r;
else
if(p&&p-
>key)
p->rchild=r;}}
//這裡的treenode* p也可以拿掉,直接用bt
template
<
class
t>
intdelete
(treenode
*&p)
else
if(p-
>rchild==
null
)else
p->key=s-
>key;
if(q!=p)
else
q->lchild=s-
>lchild;
}return1;
}template
<
class
t>
intdeletetree
(treenode
*&bt , t value)
}int
main
(int argc,
const
char
* ar**)
; treenode<
int>
*bt=
null
;for
(int i=
0;i<
14;i++
)treeinorder
(bt)
; cout << endl;
deletetree
(bt,16)
;deletetree
(bt,82)
;deletetree
(bt,73)
;int cc=
deletetree
(bt,70)
;treeinorder
(bt)
; cout<
cout<
return0;
}
#include
#include
using
namespace std;
typedef
char element;
struct treenode};
//建立一顆二叉樹,約定使用者遵照前序遍歷的方式輸入資料;遞迴的過程;
treenode*
createtree
(treenode* t)
return t;
}//訪問節點
void
visti
(char c,
int level)
//前序遍歷
void
preorder
(treenode* t,
int level)
}//中序遍歷
void
inorder
(treenode* t,
int level)
}//後序遍歷
void
afterorder
(treenode* t,
int level)
}//下面是非遞迴的三種遍歷方式
void
unpreorder
(treenode* t)
else}}
void
uninorder
(treenode* t)
treenode* temp=s.
top();
cout<
>data<<
" ";
s.pop();
t=temp-
>rchild;}}
//非遞迴的後續有點麻煩呀!!!默默又背了幾遍,哈哈哈哈哈
void
unafterorder
(treenode* t)
else}}
intmain()
//**一下下
abc~
~d~~e~
~c d b e a
#include
#include
using
namespace std;
string s1=
"abdce"
;//前序;
string s2=
"bdace"
;//中序;
string s3=
"dbeca"
;//後序;
//已知前序和中序,求後序
void
post
(int root,
int start ,
int end)
//已知中序和後序,求前序
void
pre(
int root,
int start ,
int end)
intmain()
我寫(照搬)上面**,也是為了理解。希望對你們有幫助。注釋不詳細,主要為了讓自己鞏固複習用的,嘿嘿嘿。一起加油! 二叉樹的三種遍歷
重新又看了一遍二叉樹 binary tree 發現很多東西自己還沒有弄明白,原來三種遍歷方式還不是自己想象中的那樣 前序遍歷 preorder 是先輸出自己,然後左,最後右。中序遍歷 inorder 是先左,再輸出自己,最後右。後序遍歷 postorder 是先左,再右,最後輸出自己。所謂的xx遍歷...
二叉樹的三種遍歷
在這裡說一下二叉樹的三種遍歷 前序,中序,後序 正文 前序遍歷 是指先從根開始,再依次找尋左子結點 右子結點。學習時的經驗就是 看圖學習 第乙份圖 這樣看來 1.先找最基本的根結點 詞窮 這裡是a。2.接著找以a為根結點的左子結點,這裡是b。3.而以b為根結點也會出現左右結點,這就又有了乙個左結點d...
二叉樹的三種遍歷
二叉樹是n n 0 個節點的有限集合,它或者是空樹 n 0 或者是有乙個根節點及兩顆不相交的且分別稱為左 右子樹的二叉樹所組成。可見,二叉樹同樣具有遞迴性質。特別需要注意的是,儘管樹和二叉樹的概念之間有許多聯絡,但它們是兩個不同的概念,樹和二叉樹之間最主要的區別是 二叉樹結點的子樹要區分左子樹和右子...