這裡以二叉樹為乙個例子來進行樹的先序,中序,後序,層序,二叉樹的刪除操作。
#include
#include
using
namespace std;
typedef
struct bitnodebitnode ,
*bitree;
bitnode *
newnode
(int ch)
void
insert
( bitree &root,
int x)
if(root-
>ch==x)
else
if(root-
>ch>x)
else
}bitree create
(int data,
int n)
return root;
}void
preorder
(bitree l)
else
} cout<}void
inorder
(bitree root)
else
} cout<}void
postorder
(bitree l)
else
else}}
cout<}void
bfs_bitree
(bitree root)
if(p-
>rchild)
if(pre==last)
} cout
"數的層數 :"
<}int
high
(bitree root)
int rhigh=
high
(root-
>rchild)
;int lhigh=
high
(root-
>lchild)
;return rhigh>lhigh ? rhigh+
1:lhigh+1;
}bool
search
(bitree root,
int x)
if(root-
>ch==x)
else
if(root-
>ch>x)
else
}bitnode *
findmaxnode
(bitree root)
return p;
}bitnode *
findminnode
(bitree root)
return p;
}void
deletenode
(bitree &l,
int x)
if(l-
>ch==x)
else
if(l-
>lchild!=
null
)else
if(l-
>rchild!=
null)}
else
if(l-
>ch>x)
else
}int
main()
; bitree root=
create
(data,7)
;preorder
(root)
;inorder
(root)
;postorder
(root)
;bfs_bitree
(root)
; cout<<
"樹的高度: "
<<
high
(root)
/coutdeletenode
(root,5)
;preorder
(root)
;inorder
(root)
;postorder
(root)
;return0;
}
資料結構 樹的遍歷(遞迴遍歷)
樹的遍歷 遞迴遍歷 include include include typedef struct treenodetreenode,treenodepointer 先序遍歷 void printroot treenodepointer root 中序遍歷 void printroot2 treeno...
資料結構(非遞迴先序遍歷)
要求實現下列函式 void preorder bitree bt,void visit telemtype 使用棧,非遞迴先序遍歷二叉樹bt,對每個結點的元素域data呼叫函式visit 二叉鍊錶型別定義 typedef struct bitnode bitnode,bitree status in...
資料結構 二叉樹的遞迴 非遞迴遍歷
複習一下二叉樹遞迴非遞迴的先中後序遍歷 寫非遞迴後序遍歷的時候卡殼了,參考了一下網上的思路,大概有兩種,一種是標記每個節點是否有走過,如果父節點的左右子節點都標記訪問過,則可以訪問父節點 一種是定義乙個指標,指向上乙個訪問的節點,如果某父節點的右子節點為null或者是上乙個訪問的節點,則該父節點應當...