演算法實驗 層序列表問題(二叉樹)

2021-09-06 22:48:40 字數 1060 閱讀 4182

問題描寫敘述:對樹中結點按層序列表是指先列樹根,然後從左到右一次列出全部深度為1的節點,再從做到右地列出深度為2的節點,等等。層序列表問題要求對一顆給定的二叉樹按層序列表。

資料輸入:第一行為乙個整數n,表示給定的二叉樹有n個頂點。接下來的n行中,每行有3個整數a,b,c 分別表示編號為a的節點的左兒子b和右兒子c。

51 4 2

4 3 0

2 5 0

3 0 0

5 0 0

output:

1 4 2 3 5

**:

#include#includeusing namespace std;

//全域性變數

int t1,t2,t3;

typedef struct btnode

btnode ;

queueq;

void *preorder_create_btree(btnode *&t,int k);

void inorder(btnode *t);

void inorder(btnode *t);

void add(btnode *&t,int m)

// 通過函式指標*visit訪問根結點,以便靈活完畢對應的操作

else

add(t->lchild,m); // 中序遍歷左子樹

add(t->rchild,m); // 中序遍歷右子樹

}}/*

//前序遍歷

void inorder(btnode *t)}*/

//層序遍歷

void levelorder(btnode *t)

}int main()

// else//之後每加入一次須要再遍歷二叉樹,符合條件然後加入

add(bt,t1);

}// cout<<"中序遍歷:";

// inorder(bt);

// coutpreorder_create_btree(t->lchild,0) ;

preorder_create_btree(t->rchild,0) ;

}}

二叉樹的層序列印

void levelprint bintree bt else printf c dis,列印結點後,再列印其右邊距 next level nodes 2 左右子樹入隊,下一層結點數增加2 current level nodes 因為有出隊,所以當前層結點數減1 if current level n...

Leetcode 二叉樹層遍歷演算法

需求 以層遍歷一棵二叉樹,二叉樹的結點結構如下 struct tree node 例如 1 2 3 4 5 層遍歷後輸出1,2,3,4,5,代表該結點為空。要求 空間複雜度為o n 時間複雜度為o n 思路 使用乙個大小為n的陣列,以逐層結點方式記錄該陣列 掃瞄本層同時列印出下層結點的值或空值。陣列...

C語言演算法實驗 二叉樹

實驗內容與要求 問題描述 建立一棵二叉樹,試程式設計實現二叉樹的如下基本操作 1.按先序序列構造一棵二叉鍊錶表示的二叉樹t 2.對這棵二叉樹進行遍歷 先序 中序 後序遍歷,分別輸出結點的遍歷序列 3.求二叉樹的葉結點數目 要求 n設計要求 首先設計乙個含有多個選單項的主控選單程式,然後再為這些選單項...