層次遍歷二叉樹以及遍歷第K層二叉樹
層次遍歷的時候用到了,STL中的佇列。
void LevelOrder(BtNode *ptr)
{
queue<BtNode*> que;
que.push(ptr);
while (!que.empty())
{
BtNode * temp = que.front();
if(temp->leftchild != NULL)
que.push(temp->leftchild);
if(temp->rightchild != NULL)
que. push(temp->rightchild);
que.pop();
printf("%c ", temp->data);
}
}
int Level_K_prin(BtNode *ptr,int k,int count_tt) //count_tt代表從那一層開始,0或1
{
// static int count_tt = 1;
if (count_tt == k)
{
printf("%c ", ptr->data);
return k;
}
if (ptr->leftchild != NULL)
{
//count_tt += 1;
Level_K_prin(ptr->leftchild, k,count_tt+1 );
}
if(ptr->rightchild != NULL)
{
//count_tt += 1;
Level_K_prin(ptr->rightchild, k,count_tt+1);
}
}
相關推薦
層次遍歷二叉樹以及遍歷第K層二叉樹
層次遍歷的時候用到了,STL中的佇列。 void LevelOrder(BtNode *ptr) { queue<BtNode*> que; que.push(ptr); while (!que.empty()) {
二叉樹節點個數,葉子個數,第K層個數,最低公共節點
fun ret tco left right amp 最小公共 last turn 1. 節點個數 function getNodeNum(root){ if(root == null){ return 0; } //+1為root
求二叉樹第K層的葉子節點的個數(假設根節點是第一層)
演算法思想:採用佇列結構按層次遍歷,遍歷K層時記錄葉子的個數 int LeafKlevel(BiTree bt, int k){ //求二叉樹bt的第k(k >1)層上葉子的節點個數 if(bt == NULL || k < 1)
二叉樹的節點個數、葉子節點個數、第k層的節點個數
class BinaryTreeNode { int val; BinaryTreeNode left = null; BinaryTreeNode right = null; } public class NodesStatistic
求二叉樹第K層結點個數
描述如果按照二叉樹的順序儲存結構,逐個輸入二叉樹的結點值,(即按從上到下、從左至右的順序,逐個輸入結點值,對於空結點使用0表示),則一棵二叉樹可以被一個序列唯一表示,如A表示一棵只有根結點的二叉樹;A#C表示一個深度為2、根結點左子樹為空的二叉樹。請根據輸入的二叉樹的序列,建
求二叉樹葉子節點的個數 && 求第K層的節點個數
求二叉樹葉子節點的個數 思路: 1.如果根節點為NULL時,則是空樹,返回0; 2.根節點不為空時,如果根節點的左右子樹均為空,則該二叉樹中只有一個節點,即返回1; 3.葉子節點的個數=左子樹葉子節點
每日一題——求二叉樹葉子節點個數,第K層節點個數
1,求葉子節點個數 int leafnum(Node* root) { if(root == NULL) return 0; if(root->left ==
生成二維碼以及生成帶頭像標示的二維碼
/** * 用字串生成二維碼 * * @param text * @return * @throws WriterException */ public static Bitmap create2DCode(String text) { //生成二維矩陣,編碼時指定大小,不要生成
主席樹 - 查詢某區間第 K 大
print file sta mod statistic stat IT may 題意 You are working for Macrohard company in data structures department. After failing your pre
spoj COT - Count on a tree (樹上第K小 LCA+主席樹)
roo sizeof 過程 mes problems ems name ret bit 鏈接: https://www.spoj.com/problems/COT/en/ 思路: 首先看到求兩點之前的第k小很容易想到用主席樹去寫,但是主席樹處理的是線性結構,而這道題要
poj2104求區間第k小,靜態主席樹入門模板
看了很久的主席樹,最後看https://blog.csdn.net/williamsun0122/article/details/77871278這篇終於看懂了 #include <stdio.h> #include<algorithm> using namespace s
《資料演算法:Hadoop_Spark大資料處理技巧》艾提拉筆記.docx 第1章二次排序:簡介 19 第2章二次排序:詳細示例 42 第3章 Top 10 列表 54 第4章左外連線 96 第5
《資料演算法:Hadoop_Spark大資料處理技巧》艾提拉筆記.docx 第1章二次排序:簡介 19 第2章二次排序:詳細示例 42 第3章 Top 10 列表 54 第4章左外連線 96 第5章反轉排序 127 第6章
[poj2828]Buy Tickets(樹狀陣列求第k大)
傳送門 題意: i個人排隊,對於第i個人,我們知道他排在第pi個人後面(可以插隊)且他有一個權值val,我們需要輸出排好之後每個人的權值。 首先我想的是連結串列來模擬,但是發現由於p[i]指的是位置而不是編號,所以連結串列是隻能O(n^2)的。 那麼怎麼辦呢
落谷 P3834 可持久化線段樹 1(主席樹)(區間第k小)
設區間為l,r,用r版本減去l版本求出區間第k小,一個板子 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using
Matlab實現二次取中法求第K小
%使用二次取中求第K小 %主函式 function main() setGlobalx(5);%設定視窗大小 k=9;%第K小 arr = [1,5,5,7,2,3,19,19,4,6,89,8]; fprintf('陣列為:'
WOJ 1718 FloatingMedian [樹狀陣列] [區間第K大]
傳送門 其實就是動態維護一個樹狀陣列 , 然後中位數就是區間第(k+1)/2 大 我們可以對樹狀陣列二進位制拆分 , 如果當前答案加上列舉的這個區間的值不超過 (k+1)/2 就加上這個答案 , 複雜度是logn 的 #include<bits/stdc++.h&g
求區間第k小(主席樹)
區間第k小 題目描述 如題,給定NNN個正整數構成的序列,將對於指定的閉區間查詢其區間內的第KKK小值。 輸入格式 第一行包含兩個正整數NNN、MMM,分別表示序列的長度和查詢的個數。 第二行包含NN
樹狀陣列:第K大值
#include<cstdio> #include<set> #include<cstdlib> #include<cstring> using namespace std; const int maxn = 300010; #define L ch[rt]
SPOJ-COT 樹上靜態第k大 樹上主席樹
樹上主席樹和序列主席樹完全沒有區別 建樹的時候直接dfs建樹就好 這題wa了幾發 原因是沒有太搞清lca點的計算關係 #include<bits/stdc++.h> using namespace std; const int N=3e5+10; stru
hdu2665 (劃分樹_查詢區間第k大)
測板子的題目。劃分樹理解起來很容易,和線段樹差不多,注意查詢函式的下標很容易寫錯。#include <stdio.h> #include <algorithm> #include