首页 > 代码库 > 二叉树的基本结构与实现
二叉树的基本结构与实现
实现了二叉树类似链表的一种结构,主要是用两个函数进行添加左右节点,同时每次添加都返回新加上的节点地址,我觉得应该可以进行递归式的动态添加,但是我没有实现。
下面是最简单的二叉树的一些实现操作。
BinaryTree.cpp
1 #include "iostream" 2 #include "stdlib.h" 3 4 typedef struct _btree_ 5 { 6 char *data; 7 struct _btree_ *leftTree; 8 struct _btree_ *rightTree; 9 }BTree;10 11 /*初始化根节点,返回的是根节点地址*/12 BTree*13 initRoot(char *data)14 {15 BTree *root = (BTree *)malloc(sizeof(BTree));16 root->data =http://www.mamicode.com/ data;17 root->leftTree = nullptr;18 root->rightTree = nullptr;19 return root;20 }21 22 /*添加左节点,并返回加入的左节点的地址*/23 BTree*24 addLeft(BTree *father, char *data)25 {26 BTree *p = (BTree *)malloc(sizeof(BTree));27 p->data =http://www.mamicode.com/ data;28 p->leftTree = nullptr;29 p->rightTree = nullptr;30 father->leftTree = p;31 return p;32 }33 34 /*添加右节点,并返回加入的右节点的地址*/35 BTree*36 addRight(BTree *father, char *data)37 {38 BTree *p = (BTree *)malloc(sizeof(BTree));39 p->data =http://www.mamicode.com/ data;40 p->leftTree = nullptr;41 p->rightTree = nullptr;42 father->rightTree = p;43 return p;44 }45 46 /*打印出所有节点的数据*/47 void48 printOut(BTree *root)49 {50 if (root)51 std::cout << root->data << std::endl;52 else53 return;54 if (root->leftTree)55 {56 printOut(root->leftTree);57 }58 if (root->rightTree)59 { 60 printOut(root->rightTree);61 }62 }63 64 int main(void)65 {66 BTree *root = nullptr;67 BTree *left = nullptr;68 BTree *right = nullptr;69 root = initRoot("root");70 left=addLeft(root, "left");71 right=addRight(root, "right");72 addLeft(left, "A");73 addRight(left, "B");74 addLeft(right, "C");75 addRight(right, "D");76 printOut(root);77 system("pause");78 return 0;79 }
打印操作没有进行严格测试,如果读者发现错误希望不吝赐教,不胜感激。
以上。
二叉树的基本结构与实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。