算法练习之二叉查找树 C++实现

本文介绍了一个简单的二叉树实现,包括节点的插入和查找功能。文章提供了TNode类定义及其构造方法,以及BTree类的方法实现,如InsertNode用于插入节点,FindValue用于查找指定值的节点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/////////////////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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值