實驗六 樹(二)

2021-10-02 20:31:28 字數 1947 閱讀 1094

編寫乙個程式,實現二叉樹的序列化和反序列化,完成以下功能:

(1) 建立二叉鏈b。

(2) 採用括號表示輸出二叉鏈b。

(3) 對二叉鏈b進行先序遍歷,產生先序序列化序列str。

(4) 輸出先序序列化序列str。

(5) 由str構建二叉鏈b1(反序列化)。

(6) 採用括號表示輸出二叉鏈b1。

(7) 銷毀二叉鏈b和b1。

#include

#include

"stdio.h"

#include

"malloc.h"

using

namespace std;

typedef

struct

sqstring;

void

strassign

(sqstring &s,

char cstr)

//生成串

s.length=i;

}void

strcopy

(sqstring &s,sqstring t)

//複製串

s.length=t.length;

}bool

strequal

(sqstring s,sqstring t)

//判斷串相等

}return same;

}sqstring concat

(sqstring s,sqstring t)

//串的連線

for(i=

0;i)return str;

}void

dispstr

(sqstring s)

//輸出串

cout

char elemtype;

typedef

struct node

btnode;

void

createbtree

(btnode *

&b,char

*str)

//建立二叉樹

else}}

j++; ch=str[j];}

}void

destroybtree

(btnode*

&b)//銷毀二叉樹

}btnode *

findnode

(btnode *b,

char x)

//查詢結點

} btnode *

lchildnode

(btnode *p)

//找左孩子結點

btnode *

rchildnode

(btnode *p)

//找右孩子結點

intbtheight

(btnode *b)

//求高度

}void

dispbtree

(btnode *b)

//輸出二叉樹 }}

int i=0;

sqstring preorderseq

(btnode*b)

str.data[0]

=b->data;

str.length=1;

leftstr=

preorderseq

(b->lchild)

; str1=

concat

(str,leftstr)

; rightstr=

preorderseq

(b->rchild)

; str=

concat

(str1,rightstr)

;return str;

}btnode *

createpreseq

(sqstring str)

intmain()

僅作留檔。

實驗六 最小代價生成樹

一 實驗名稱 最小代價生成樹 二 實驗目的 1.掌握貪心演算法解決問題的思想和一般過程,2.學會使用普里姆演算法解決實際問題。三 實驗內容 完善下列程式,並回答問題。1 include2 define g node num 6 結點個數 3 define infty 65535 4 template...

實驗五 樹與二叉樹的實驗二

一 實驗目的 1 熟練理解樹和二叉樹的相關概念,掌握的儲存結構和相關操作實現 2 掌握樹的順序結構的實現 3 學會運用樹的知識解決實際問題 二 實驗內容 1 自己確定乙個二叉樹 樹結點型別 數目和結構自定 利用鏈式儲存結構方法儲存。實 現樹的構造,並完成 1 用前序遍歷 中序遍歷 後序遍歷輸出結點資...

實驗五 樹和二叉樹實驗

三 實驗內容 1.自己設計乙個二叉樹,深度最少為4,請遞迴演算法分別用前序 中序 後序遍歷輸出樹結點。ifndef tree h define tree h struct binode class tree tree void preorder private binode root binode ...