C 建立順序儲存完全二叉樹並以廣義表形式輸出

2021-10-11 17:48:46 字數 1217 閱讀 6263

建立順序儲存完全二叉樹並以廣義表形式輸出

題目要求:

假設用順序表來表示一棵完全二叉樹。從根到葉結點按層次從 1 開始編號,同一層次從左到右編號,資料儲存在對應的陣列元素中。試編寫演算法由此順序儲存結構建立該二叉樹的二叉鍊錶。

輸入格式:

輸入只有一行,為順序輸入的從根節點開始的各個節點元素,它們之間用空格隔開,整個輸入以 $ 結束。

輸出格式:

輸出有一行,為二叉樹結構的廣義表示式。

樣例輸入:

a b c d $

樣例輸出:

a(b(d),c)

解題思路:

由完全二叉樹的特點可得,若父親結點的索引為 i,那麼該父親結點的左孩子的索引為 2 * i + 1,右孩子的索引為 2 * i + 2。

**編寫:

#include

#include

using

namespace std;

class

node

~node()

node *

build

(string &str,

int index =0)

void

show()

}if(rchild !=

null

) cout <<

',';

rchild-

>

show()

; cout <<

')';}}

};class

binarytree

~binarytree()

void

build

(string &str)

void

show()

};intmain()

binarytree binarytree;

binarytree.

build

(str)

; binarytree.

show()

;return0;

}

二叉樹的建立(順序儲存)

資料結構程式設計練習 六 題目 1 能夠呼叫遞迴函式讀取相應的資料建立二叉樹,相應資料格式自行設計 2 實現先序 中序 後序遍歷二叉樹 3 求取二叉樹中的所有結點數 4 求取二叉樹的深度 輸入如圖 所示二叉樹的方 式為依次輸入 1,2 3,0,4 5,6,1 實現 include iostream ...

順序儲存二叉樹

從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列,看下面的示意圖。順序二叉樹通常只考慮完全二叉樹 第n個元素的左子節點為 2 n 1 第n個元素的右子節點為 2 n 2 第 n 個元素的父節點為 n 1 2 n 表示二叉樹中的第幾個元素 按 0 開始編號...

順序儲存二叉樹

從資料儲存來看,陣列儲存方式和樹的儲存方式可以相互轉換,即陣列可以轉換成樹,樹也可以轉換成陣列。陣列轉換成樹即是將陣列中的各個元素按照二叉樹的層次儲存起來的過程。原陣列 1,2,3,4,5,6,7 轉換為順序二叉樹如下圖所示 順序儲存二叉樹的特點 通常只考慮完全二叉樹 第n個元素的左子節點為2 n ...