求二叉樹高度

來源:互聯網
上載者:User

因為樹是遞迴定義的,所以用遞迴演算法很方便。

#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstdio>using namespace std;struct Node {char data;Node *lchild;Node *rchild;};void High(Node *T, int &h){if (T == NULL)h = 0;else {int left_h;High(T->lchild, left_h);int right_h;High(T->rchild, right_h);h = 1 + max(left_h, right_h);}}Node *CreateBiTree(Node *&T) {  // 演算法6.4// 按先序次序輸入二叉樹中結點的值(一個字元),空白字元表示空樹,// 構造二叉鏈表表示的二叉樹T。char ch;cin >> ch;if (ch == '#')T = NULL;else {if (!(T = (Node *)malloc(sizeof(Node))))return 0;T->data = ch;              // 產生根結點CreateBiTree(T->lchild);   // 構造左子樹CreateBiTree(T->rchild);   // 構造右子樹}return T;} // CreateBiTreevoid Free(Node *&T){if (T == NULL)return;Free(T->lchild);//T->lchild = NULL;Free(T->rchild);//T->rchild = NULL;free(T);T = NULL;}int main(int argc, char **argv){freopen("cin.txt", "r", stdin);Node *T = NULL;CreateBiTree(T);int height;High(T, height);cout << height << endl;Free(T);return 0;}/* cin.txt:ABC##DE#G##F###*/

 

構造的樹:

輸出為5。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.