算法练习之二叉查找树 C++实现
  TEZNKK3IfmPf 2024年08月02日 37 0
/Tnode.h
class TNode
{
public:
    methods
    TNode(void);
    TNode(int data);
    ~TNode(void);

    /members
    TNode* left;
    TNode* right;
    int data;
};

/TNode.cpp/
TNode::TNode(void)
{
    TNode::data=0;
    TNode::left=NULL;
    TNode::right=NULL;
}

TNode::TNode(int data)
{
    TNode::data = data;
    TNode::left=NULL;
    TNode::right=NULL;
}

TNode::~TNode(void)
{
}

//end//

/BTree.h//

class BTree{
public:
    methods
    void InsertNode(TNode* node);
    void PrintNode(TNode* head);
    TNode* FindValue(TNode* head,int value);
    TNode* Find(TNode* head,TNode* node);
    bool IsEmpty(TNode* head);
    members
    TNode* head;

};

//BTree.cpp


#include "stdafx.h"
#include "Node.h"
#include <iostream>


/插入节点
void BTree::InsertNode(TNode *node){
    if(this->IsEmpty(node)){
    return;
    }

TNode* current = this->head;
while(current!=NULL){
if(node->data < current->data){
    if(current->left != NULL){
    current=current->left;
    }
    else{
    current->left = new TNode(node->data);
    break;
    }
}
else{
    //current=current->right;
if(current->right != NULL){
    //current->left = new TNode(77);
    current=current->right;
    }
    else{
    current->right = new TNode(node->data);
    break;
    }
}
}

}

bool BTree::IsEmpty(TNode* head){
return head==NULL;
}

/使用中序遍历,这样可以保证打印出来的是排序好的 
void BTree::PrintNode(TNode *currentNode){
    using namespace std;
    if(currentNode != NULL)
    {
    this->PrintNode(currentNode->left);
    cout<<currentNode->data<<"  ";

    this->PrintNode(currentNode->right);
    }
}

/查找节点
TNode* BTree::FindValue(TNode* current,int value){

    while(current!=NULL){
    if(current->data == value){
    return current;
    }
    else if(current->data < value){
    current = current->right;
    }
    else{
    current=current->left;
    }
    }
return NULL;


}

TNode* BTree::Find(TNode* current,TNode* node){
return this->FindValue(current,node->data);
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年08月02日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   9天前   16   0   0 编程开发
TEZNKK3IfmPf