21xrx.com
2024-12-22 21:06:12 Sunday
登录
文章检索 我的文章 写文章
使用STL构建C++二叉树
2023-07-13 06:50:04 深夜i     --     --
STL C++ 二叉树 构建 数据结构

STL是C++中非常实用的标准库,其中包含了很多容器和算法,包括二叉树。使用STL构建C++二叉树非常简单,可以大大提高开发效率。

首先,需要包含头文件 。set是STL中的关联容器之一,也是用来存储二叉树的容器之一;utility是STL中的一个工具类。

然后,创建一个set对象,用于存储二叉树节点。节点需要定义一个结构体,包含左右子节点和节点值。


#include <set>

#include <utility>

struct TreeNode {

  int val;

  TreeNode *left;

  TreeNode *right;

  TreeNode(int x) : val(x), left(NULL), right(NULL) {}

};

set<TreeNode*> nodes;

接下来,创建一个函数来构建二叉树。该函数将使用递归方法,以先序遍历的方式构建二叉树。


void buildTree(TreeNode* root, int val) {

  if(root == NULL) {

    nodes.insert(new TreeNode(val));

    return;

  }

  if(val < root->val) {

    if(root->left == NULL) {

      root->left = new TreeNode(val);

      nodes.insert(root->left);

    } else {

      buildTree(root->left, val);

    }

  } else if(val > root->val) {

    if(root->right == NULL) {

      root->right = new TreeNode(val);

      nodes.insert(root->right);

    } else {

      buildTree(root->right, val);

    }

  }

}

最后,在主函数中调用buildTree函数来构建二叉树,并使用迭代器遍历set容器来输出二叉树中所有节点的值。


int main() {

  TreeNode* root = new TreeNode(5);

  nodes.insert(root);

  buildTree(root, 2);

  buildTree(root, 7);

  buildTree(root, 1);

  buildTree(root, 3);

  buildTree(root, 6);

  buildTree(root, 8);

  for(set<TreeNode*>::iterator it = nodes.begin(); it != nodes.end(); it++) {

    cout<<(*it)->val<<" ";

  }

  return 0;

}

通过以上简单的代码可以构建出一个二叉树,添加、查找、删除等操作可以使用set容器提供的方法来完成。此外,对于大型数据集,STL的二叉树相比手写二叉树更具优势,因为STL算法和数据结构已经经过了广泛的测试和优化,其效率和稳定性更有保障。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复