資料結構 樹非遞迴遍歷

2021-10-10 23:40:54 字數 2055 閱讀 8164

這裡以二叉樹為乙個例子來進行樹的先序,中序,後序,層序,二叉樹的刪除操作。

#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)

(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或者是上乙個訪問的節點,則該父節點應當...