C++二叉树

本文介绍了C++中的二叉树数据结构,包括其定义、节点结构以及如何通过递归实现二叉树的遍历。示例展示了如何创建和连接二叉树节点,并提供了主函数来调用创建和遍历二叉树的代码。
摘要由CSDN通过智能技术生成
开发工具与关键技术: Visual Studio / C++
作者:何文涛
撰写时间:2019-7-25

树形结构:非线性结构,一个直接前驱,但可能有多个直接后继
二叉树则是C++里面的一个树型数据结构,二叉树的结构最简单,规律性最强,可以证明所有树都能转为唯一对应的二叉树,不失一般性。

二叉树:其数据结构具体可以理解为左兄弟右孩子。
下面举了个简单的例子
//二叉树节点
typedef struct BINARYNODE
{
char ch;
struct BINARYNODE* lchild; //左子节点
struct BINARYNODE* rchild; //右子节点
}BinaryNode;
首先定义了一个结构体,作为建立二叉树型节点,定义了一个cher类型的ch用来装节点的数据,而指针类型的lchild和rchild则是用来表示节点的左子节点和右子节点。
//输出
void Recursion(BinaryNode* root)
{
if (root==NULL)
{
return;
}
//先访问根节点
cout << root->ch;
//在遍历左子树
Recursion(root->lchild);
//在遍历右子树
Recursion(root->rchild);
}
这里是输出的一个递归调用,参数是一个指针类型的root作为遍历需要用到的指针,先判断指针是否为空,为空的话就直接返回,然后进行输出

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的 C++ 二叉树的实现: ```c++ #include <iostream> using namespace std; struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class BinaryTree { private: TreeNode* root; public: BinaryTree() { root = NULL; } void insert(int val) { TreeNode* newNode = new TreeNode(val); if (root == NULL) { root = newNode; return; } TreeNode* curr = root; while (true) { if (val < curr->val) { if (curr->left == NULL) { curr->left = newNode; return; } curr = curr->left; } else { if (curr->right == NULL) { curr->right = newNode; return; } curr = curr->right; } } } void inorderTraversal(TreeNode* node) { if (node == NULL) { return; } inorderTraversal(node->left); cout << node->val << " "; inorderTraversal(node->right); } void inorderTraversal() { inorderTraversal(root); } void preorderTraversal(TreeNode* node) { if (node == NULL) { return; } cout << node->val << " "; preorderTraversal(node->left); preorderTraversal(node->right); } void preorderTraversal() { preorderTraversal(root); } void postorderTraversal(TreeNode* node) { if (node == NULL) { return; } postorderTraversal(node->left); postorderTraversal(node->right); cout << node->val << " "; } void postorderTraversal() { postorderTraversal(root); } }; int main() { BinaryTree tree; tree.insert(5); tree.insert(3); tree.insert(7); tree.insert(1); tree.insert(9); cout << "Inorder Traversal: "; tree.inorderTraversal(); cout << endl; cout << "Preorder Traversal: "; tree.preorderTraversal(); cout << endl; cout << "Postorder Traversal: "; tree.postorderTraversal(); cout << endl; return 0; } ``` 这个二叉树实现了插入节点、中序遍历、前序遍历和后序遍历等基本操作。你可以根据需要进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值