二叉樹 - 最大左高樹

來源:互聯網
上載者:User

標籤:二叉樹   左高樹   最大左高樹   

MaxHBLT.h

#include <iostream>template <typename T>inline void Swap(T& a, T& b){T c = a;a = b; b = c;}template <typename T> class MaxHBLT;template <typename T>class TNode{friend MaxHBLT<T>;public:TNode(const T& val){data = val;s = 1;left = right = 0;}private:T data;unsigned int s;TNode<T> *left, *right;};template <typename T>class MaxHBLT{public:MaxHBLT();bool meld(TNode<T> *&rl, TNode<T> *rr);bool insert(const T& val);unsigned int high() const { return root->s;}void show() const {h_show(root);}bool del(T& val);private:void h_show(TNode<T> *node) const;TNode<T> *root;};template <typename T>MaxHBLT<T>::MaxHBLT(){root = 0;}template <typename T>bool MaxHBLT<T>::meld(TNode<T> *&rl, TNode<T> *rr){if (!rr)return false;if (!rl){rl = rr;return true;}if (rl->data < rr->data)Swap(rl, rr);meld(rl->right, rr);if (!rl->left){rl->left = rl->right;rl->right = 0;rl->s = 1;}else{if (rl->left->s < rl->right->s )Swap(rl->left, rl->right);rl->s = rl->right->s + 1;}return true;}template <typename T>bool MaxHBLT<T>::insert(const T& val){TNode<T> *ps = new TNode<T> (val);return meld(root, ps);}template <typename T>bool MaxHBLT<T>::del(T& val){if (!root)return false;val = root->data;if ( ! meld(root->left, root->right))return false;TNode<T> *p = root;root = root->left;delete p;}template <typename T>void MaxHBLT<T>::h_show(TNode<T> *node) const{if (node){h_show(node->left);std::cout <<node->data <<" ";h_show(node->right);}}


main.cpp

#include <iostream>#include "MaxHBLT.h"using namespace std;int main(){MaxHBLT<int> a;int b;for (int i = 1; i <= 20; ++i){b = rand();a.insert(b);}a.show();cout <<endl;for (int i = 1; i <= 20; ++i){a.del(b);cout <<"delete:" <<b <<endl;}a.show();for (int i = 1; i <= 20; ++i){b = rand();a.insert(b);}a.show();cout <<endl;cout <<a.high() <<endl;cin.get();cin.get();return 0;}


二叉樹 - 最大左高樹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.