問題描寫敘述:對樹中結點按層序列表是指先列樹根,然後從左到右一次列出全部深度為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設計要求 首先設計乙個含有多個選單項的主控選單程式,然後再為這些選單項...