21xrx.com
2025-03-27 22:33:47 Thursday
文章检索 我的文章 写文章
如何在C++中建立二叉树
2023-07-04 20:32:30 深夜i     --     --
C++ 二叉树 建立

二叉树是一种常见的数据结构,可以在计算机科学中广泛应用。在C++中,建立二叉树有多种方法,本文将介绍其中一种基本的方法。

首先,我们需要定义二叉树的节点。一个二叉树节点包含左右两个子节点指针和节点值。代码如下:

struct TreeNode{
  int val;
  TreeNode *left;
  TreeNode *right;
  TreeNode(int x) : val(x), left(nullptr), right(nullptr){}
};

在定义好二叉树节点之后,我们可以使用递归的方式来建立二叉树。具体而言,我们可以通过一个构造函数,不断地向二叉树中插入新节点。构造函数代码如下:

class BST{
public:
  BST()
    root = nullptr;
  
  void insert(int val){
    insertHelper(root, val);
  }
  TreeNode* getRoot()
    return root;
  
private:
  TreeNode *root;
  void insertHelper(TreeNode *&current, int val){
    if(current == nullptr){
      current = new TreeNode(val);
    }else if(val < current->val){
      insertHelper(current->left, val);
    }else{
      insertHelper(current->right, val);
    }
  }
};

该构造函数定义了一个名为BST的类,其中包含三个成员函数:BST,insert和getRoot。构造函数中,我们首先将根节点设置为nullptr。insert函数用于向二叉树中插入新节点,它调用了insertHelper函数。insertHelper函数通过递归的方式找到节点应该插入的位置,并创建一个新的节点。getRoot函数用于获取根节点,方便我们进行后续操作。

通过上述代码,我们就可以成功地建立一个二叉树。我们可以使用如下代码来创建一个包含5个节点的二叉树,并输出每个节点的值:

int main(){
  BST tree;
  tree.insert(5);
  tree.insert(3);
  tree.insert(7);
  tree.insert(2);
  tree.insert(4);
  TreeNode *root = tree.getRoot();
  cout<<"Binary Tree:"<<endl;
  printAllTree(root);
  return 0;
}

在这段代码中,我们首先创建一个名为tree的BST对象,然后通过insert函数插入5个节点。接着,我们使用getRoot函数获取根节点,并输出整棵树。

完整代码如下:

#include <iostream>
using namespace std;
struct TreeNode{
  int val;
  TreeNode *left;
  TreeNode *right;
  TreeNode(int x) : val(x), left(nullptr), right(nullptr){}
};
class BST{
public:
  BST()
    root = nullptr;
  
  void insert(int val){
    insertHelper(root, val);
  }
  TreeNode* getRoot()
    return root;
  
private:
  TreeNode *root;
  void insertHelper(TreeNode *&current, int val){
    if(current == nullptr){
      current = new TreeNode(val);
    }else if(val < current->val){
      insertHelper(current->left, val);
    }else{
      insertHelper(current->right, val);
    }
  }
};
void printAllTree(TreeNode *root){
  if(root!=nullptr){
    printAllTree(root->left);
    cout<<root->val<<' ';
    printAllTree(root->right);
  }
}
int main(){
  BST tree;
  tree.insert(5);
  tree.insert(3);
  tree.insert(7);
  tree.insert(2);
  tree.insert(4);
  TreeNode *root = tree.getRoot();
  cout<<"Binary Tree:"<<endl;
  printAllTree(root);
  return 0;
}

通过上述代码,我们就成功地在C++中建立了一个简单的二叉树。当然,该方法不一定适用于所有的二叉树建立场景,但在绝大多数情况下都能满足需求。

  
  

评论区