1. 程式人生 > >資料結構--二叉樹的遍歷--求二叉樹的深度(後序遍歷)

資料結構--二叉樹的遍歷--求二叉樹的深度(後序遍歷)

二叉樹為空:深度為0;

二叉樹為0:深度為1;

一般的二叉樹:深度=max{左子樹的深度,右子樹的深度} + 1。

int Depth (BiTree T)
{
  if (!T)//如果二叉樹根節點為空,則深度為0
     depthval=0;
  else 
  {depthLeft = Depth(T->lchild); //左子樹的深度
   depthRight = Depth(T->rchild);//右子樹的深度
   depthval = 1 +(depthLeft>depthRight?depthLeft:depthRight);
  }
 return depthval;
}

相關推薦

資料結構----深度

二叉樹為空:深度為0; 二叉樹為0:深度為1; 一般的二叉樹:深度=max{左子樹的深度,右子樹的深度} + 1。 int Depth (BiTree T) { if (!T)//如果二叉樹根節點為空,則深度為0 depthval=0; else {

C++實現的非遞迴前、中、

void NoRecursePreTraverse(BiTree tree){ stack<BiNode *> stack; BiNode *node = tree; while(node != NULL || !stack.empty

資料結構 C描述】編制一個病人看病模擬程式。使用順序佇列實現

編制一個病人看病模擬程式。 在病人排隊過程中,主要重複兩件事: 1.病人到達診室,將病歷本交給護士,排到等待佇列中候診。 2.護士從等待佇列中取出下一位病人的病歷,該病人進入診室就診。 //main.cpp #include <iostream>

資料結構(1) 線性表技巧及應用:字首和、排序對求法之一

雖然線性表實在過於簡單,幾乎不會有大佬寫它的應用 但是作為一個菜雞的我還是打算歸納總結一下線性表一些應用和技巧 1.字首和 emmmm 我們來看這樣一個問題 已知一個序列s[ i ] (1<=i<=n),有m個請求,每個請求為兩個整數a,b(1<=a<=b&l

輸出節點祖先順序棧

#include <stdio.h> #include <stdlib.h> #define MaxSize 50 typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild; }Bi

資料結構實驗-C語言-二叉樹的建立,前、中、後序遍歷的遞迴演算法和非遞迴演算法,葉子結點數目,求二叉樹深度,判斷二叉樹是否相似,求二叉樹左右子互換,二叉樹序遍歷的演算法,判斷二叉樹是否是完全二叉樹

1.實驗目的 熟練掌握二叉樹的二叉連結串列儲存結構的C語言實現。掌握二叉樹的基本操作-前序、中序、後序遍歷二叉樹的三種方法。瞭解非遞迴遍歷過程中“棧”的作用和狀態,而且能靈活運用遍歷演算法實現二叉樹的其它操作。 2.實驗內容 (1)二叉樹的二叉連結串列的建立 (2)二叉樹的前、中、後

資料結構】中構造

根據一棵樹的中序遍歷與後序遍歷構造二叉樹。 具體程式碼如下: struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; }; struct TreeNod

郝斌資料結構入門--P67-的先、中

郝斌資料結構入門--P67-二叉樹的先序、中序、後序遍歷   技巧:先、中、後序,是針對訪問根節點的位置來定義的。先序,先訪問根。中序,中間訪問根。後序,最後訪問根。   二叉樹的遍歷 (數是一個非線性的,通過先序、中序、後序遍歷把非線性的儲存線性的硬體上)

【圖解資料結構】 一組動畫徹底理解三種

二叉樹的遍歷是指從根結點出發,按照某種次序依次訪問二叉樹中所有結點,使得每個結點被訪問一次且僅被訪問一次。 在二叉樹的遍歷中存在三種較為常用的遍歷方式:前序遍歷、中序遍歷、後序遍歷。接下來我將嘗試著用三組動畫向讀者詳細的介紹這三種遍歷方式的邏輯思路,希望讓讀者看到任何的二叉樹都能在腦海中快速的勾勒出動畫。

資料結構——由中確定的

由中序與後序遍歷確定的二叉樹 #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAXSIZE 50 typedef struct Node{ //二叉樹

資料結構專題——、中、層

二叉樹的遍歷可以分為先序遍歷、中序遍歷、後序遍歷及層序遍歷,前三者可以通過深度優先搜尋來實現,層序遍歷則可以通過廣度優先搜尋來遍歷。 對於先序遍歷、中序遍歷和後序遍歷,其中的先、中、後都是針對根節點來說的,先序遍歷的訪問順序是根節點->左子樹->右子樹,中序遍歷

Java資料結構的前,中遞迴和非遞迴

嚶嚶嚶,兩個月沒寫部落格了,由於有點忙,今天開始日更部落格。 今天總結一下學習樹的先根,中根,後根。每種兩種方法,遞迴和非遞迴。 先根: 遞迴: 思路:先根遍歷,即第一次遇到的結點就開始列印。先一直遍歷左子樹,直到未空,然後右子樹,直到為空。遞迴下去。 過程:先將1進入方法

資料結構之線索的前,中

BinaryTree線索化二叉樹>      二叉樹是一種非線性結構,在之前實現的二叉樹遍歷中不管是遞迴還是非遞迴用二叉樹作為儲存結構時只能取到該結點的左孩子和右孩子,不能得到該結點的前驅和後繼。為了儲存這種在遍歷中需要的資訊,同時也為了充分利用結點中的空指標域,我們

資料結構-線索線索

後序線索二叉樹 線索化的概念及相關圖解 在上一篇中詳細介紹了中序線索二叉樹,線索化圖解及相關概念都放在那篇部落格啦,放個傳送門 線索二叉樹詳細解析(含圖解):傳送門 包括還有先序線索二叉樹:傳送門 後序線索二叉樹 (1)後序線索二叉樹的構造

資料結構-----非遞迴演算法(利用堆疊實現)

一、非遞迴後序遍歷演算法思想 後序遍歷的非遞迴演算法中節點的進棧次數是兩個,即每個節點都要進棧兩次,第二次退棧的時候才訪問節點。 第一次進棧時,在遍歷左子樹的過程中將"根"節點進棧,待左子樹訪問完後,回溯的節點退棧,即退出這個"根"節點,但不能立即訪問,只能藉助於這個"根"

資料結構與演算法

名詞解釋  度數(degree) 一個結點的子樹個數  樹葉(leaf) 沒有子樹的結點稱為樹葉或終端結點  分支結點(branch node) 非終端結點  子女(child)和兒子(son)非終端結點  父母(parent)若

資料結構----完全和滿以及前、中

一) 滿二叉樹和完全二叉樹 1.滿二叉樹定義: 又叫Full Binary Tree. 除最後一層無任何子節點外,每一層上的所有結點都有兩個子結點(最後一層上的無子結點的結點為葉子結點)。也可以這樣理解,除葉子結點外的所有結點均有兩個子結點。節點數達到最大值

已知的前、中或者中結構的演算法

二叉樹中的前序遍歷是先訪問根結點,再訪問左子樹,右子樹。 中序遍歷是先訪問左子樹,再是根結點,最後是右子樹。 後序遍歷是先訪問左子樹,再是右子樹,最後是根結點。 演算法思路是先根據前序遍歷的第一個結點或者後序遍歷的最後一個結點,查詢對應在中序遍歷中的位置,就可以確定左子樹包

資料結構-遞迴前、中;棧實現中變數;映象

* *前序、後序、中序變數二叉樹(遞迴解法) *中序 棧實現 *深度遍歷 佇列實現 *應用:二叉樹映象(劍指offer) */ typedef struct BiTNode *BiTree;//結點指標 //前序遍歷 void preOrderTra

資料結構-非遞迴實現

最近在看關於樹結構方面的東西,想著實現二叉樹的遍歷操作。層序,先序,中序都還好,後序就比較麻煩,下面的地址很好的解釋了遞迴與非遞迴的實現方法,在此給出另一種非遞迴實現後序遍歷二叉樹的方法,通過複雜化資料結構,使得演算法更簡單。 http://blog.csdn.net/pi