A2Pro THPT Buôn Ma Thuột [2007-2010]


You are not logged in. this website requires you to be logged in. please log in and try again !
A2Pro THPT Buôn Ma Thuột [2007-2010]

Thành lập năm 2008, từng là một diễn đàn lớp với tất cả tình cảm mình gửi gắm vào. Giờ đây là nơi lưu trữ những thứ lặt vặt mình lượm lặt được trong học tập, công việc và cuộc sống !

Latest topics

» ITの言葉
by FR 17/5/2017, 14:28

» [Phim] Bunny Drop
by ƒ®ï€ñð 13/5/2017, 20:54

» error LNK2019: unresolved external symbol
by FR 10/5/2017, 10:04

» 「はさておき」Tạm thời không nghĩ đến
by ƒ®ï€ñð 7/5/2017, 14:23

» 「からすると」Phán đoán từ ~ (Chỉ căn cứ cho suy luận)
by ƒ®ï€ñð 7/5/2017, 14:22

» 「ことだから」Vì là
by ƒ®ï€ñð 7/5/2017, 14:18

» 「あげく」Sau …. rốt cuộc là …
by ƒ®ï€ñð 7/5/2017, 14:13

» 「どころではない」Không phải lúc để ~, không thể ~
by ƒ®ï€ñð 7/5/2017, 14:04

» 「ざるをえない」Đành phải, buộc phải, chỉ còn cách phải
by ƒ®ï€ñð 7/5/2017, 14:01

» 「てもさしつかえない」Dù có ~ cũng không vấn đề
by ƒ®ï€ñð 7/5/2017, 13:42

» 「てはかなわない」 Không thể chịu đựng được~
by ƒ®ï€ñð 7/5/2017, 13:39

» 「Vて → てみせる」Tuyệt đối phải, nhất định phải…
by ƒ®ï€ñð 7/5/2017, 13:34

» 「だけ」quả đúng là, đúng là….có khác
by ƒ®ï€ñð 7/5/2017, 13:28

» Hanamizuki (花水木)
by ƒ®ï€ñð 6/5/2017, 11:18

» Cách đặt lịch hẹn chuyển lại đồ của Yamato
by ƒ®ï€ñð 24/4/2017, 17:59

» Câu tiếng Nhật hay hay
by ƒ®ï€ñð 22/4/2017, 22:38

» Thanh toán đăng kí thi JLPT qua combini Lawson
by ƒ®ï€ñð 9/4/2017, 18:50

» Hướng dẫn thanh toán Amazon qua combini Lawson
by ƒ®ï€ñð 2/4/2017, 14:45

» ノート
by FR 31/3/2017, 16:14

» TBD - To be determined
by FR 17/3/2017, 13:27


CTDL - Tree

Share
avatar
FR
Blue Knight
Blue Knight

Gender : Nam

Posts Posts : 1107
Thanked : 660
Coins Coins : 6732
Tham Gia : 26/08/2008
Birthday : 05/08/1920

Status Status : Sẽ ra sao nếu như, tao là mày và mày là tao ?

CTDL - Tree

Bài gửi by FR on 18/10/2012, 08:46

Code:
#ifndef __TREESAMPLE__H__
#define __TREESAMPLE__H__

#include "stdio.h"
#include "iostream.h"

enum Error_code {success,fail,rangeerror,overflow,not_present,
                dupplicated,found};

//---------------------------------------------------------
class Node {
public:
    int data;
    Node *left, *right;
    Node();
    Node(int );
    Node(int item, Node * left, Node * right);
};

//---------------------------------------------------------
class Tree {
public:
    Tree();
    ~Tree();
   
    bool empty();
//    int size();
    Error_code insertAt(Node *, bool, int, Node **);
    void printLNR();
//    void printLRN();
//    void printNLR();

protected:
    Node *root;
    void destroy(Node *);
    void printLNR_recursive(Node *);
};

#endif //__TREESAMPLE__H__

Code:


#include "stdafx.h"

//---------------------------------------------------------
Node::Node() {
    left = right = NULL;
}
//---------------------------------------------------------
Node::Node(int item) {
    this->data = item;
    left = right = NULL;
}
//---------------------------------------------------------
Node::Node(int item, Node* left, Node*right) {
    this->data = item;
    this->left = left;
    this->right = right;
}
//---------------------------------------------------------
Tree::Tree() {
    root = NULL;
}
//---------------------------------------------------------
Tree::~Tree() {
    destroy(root);
    root = NULL;
}
//---------------------------------------------------------
void Tree::destroy(Node *root) {
    if (root != NULL) {
        destroy(root->left);
        destroy(root->right);
        delete root;
    }
}
//---------------------------------------------------------
//Tree::size() {
//}
//---------------------------------------------------------
Error_code Tree::insertAt(Node *parent, bool left_or_right, int x, Node **new_node) {
    //This method make a new node of value x and insert into the left or the right of the parent node.
    //If the parent is NULL, and the root of the tree is NULL, the new node becomes the root of the tree
    //If the parent is not NULL, and the left_or_right is true (false), and the left (right) child of parent is NULL,
    //the new node is added to the left (right) of the parent
    //The return value is success for those cases and the new_node points to the new node.
    //Otherwise, the return value is fail and the new_node is unchanged
    if ((parent == NULL) && (root != NULL))
        return fail;
    if ((parent!=NULL ) && (    (left_or_right &&  (parent->left != NULL))
                            || (!left_or_right && (parent->right != NULL))   
                          )
        )
        return fail;

    *new_node = new Node(x);
    if (parent == NULL){
        root = *new_node;
    } else {
        if (left_or_right)
            parent->left = *new_node;
        else
            parent->right = *new_node;
    }
    return success;
}

//---------------------------------------------------------
bool Tree::empty() {
    return (root==NULL);
}
//---------------------------------------------------------
void Tree::printLNR_recursive(Node *root) {
    if (root != NULL) {
    printLNR_recursive(root->left);
    cout << root->data << " ";
    printLNR_recursive(root->right);
    }
}

//---------------------------------------------------------
void Tree::printLNR() {
    printLNR_recursive(root);
}


Code:
// TestTree.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

void main() {
    Tree aTree;
    Node *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10;
    aTree.insertAt(NULL, true, 3, &p1);
    aTree.insertAt(p1, true, 5, &p2); 
    aTree.insertAt(p1, false, 26, &p3);
    aTree.insertAt(p2, true, 14, &p4); 
    aTree.insertAt(p2, false, 7, &p5); 
    aTree.insertAt(p3, true, 6, &p6); 
    aTree.insertAt(p5, true, 11, &p7); 
    aTree.insertAt(p6, true, 22, &p8); 
    aTree.insertAt(p6, false, 190, &p9); 
    aTree.insertAt(p7, true, 19, &p10); 
    /* At this point, the tree is
              3
            /  \
          5      26
          / \    /
        14    7    6   
            /    / \
          11  22  190
          /
        19
    */
    aTree.printLNR();  //the result: 14 5 19 11 7 3 22 6 190 26
}

    Hôm nay: 24/5/2017, 13:04