1. 程式人生 > >層次遍歷二叉樹以及遍歷第K層二叉樹

層次遍歷二叉樹以及遍歷第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