java 二叉树 链表 双亲 二叉链表实现二叉树

您所在的位置:网站首页 平衡二叉树实例分析图 java 二叉树 链表 双亲 二叉链表实现二叉树

java 二叉树 链表 双亲 二叉链表实现二叉树

2024-07-01 19:03| 来源: 网络整理| 查看: 265

关于链式二叉树,其实递归是最重要的,我们学会了递归,也就对二叉链表的基本操作有了很深刻的了解。

对于二叉树的基本结构:

1 #define MAXLEN 100 2 typedef char elementType; 3 4 typedef struct lBNode{ 5 elementType data; 6 struct lBNode *lChild,*rChild; 7 }BiNode,*BiTree;

为了代码的可移植性与简洁性,我们一般都需要定义许多的typedef

其次就是二叉树的建立,二叉树的建立一般来说分为两种,用户交互性的输入,一般来说是按先序输入每个节点的信息,当前节点为空,则输入特殊字符,相关代码如图所示

void createBinaryTree( BiNode *&BT ) { elementType x; cin>>x; if ( x == '/' ) { return; } else { BT = new BiNode; BT->data = x; BT->lChild = NULL; BT->rChild = NULL; createBinaryTree(BT->lChild); createBinaryTree(BT->rChild); } }

但是,这种输入的方法是有问题的,因为树的节点信息多而且比较乱,一旦输错,很有可能会前功尽弃,所以,我们一般会建议以文件的方式读取二叉树的相关信息,将文件中的节点信息读入一个二维数组中,然后根据二维数组来构建二叉树。

//二叉树数据文件 //二叉树标识--BinaryTree,无此标识将判定文件格式不对。 //每行表示二叉树中的一个结点。由3项组成: //第一项是结点元素值; //第二项表示此结点有无左子树,其中:1--有左子树,0--无左子树; //第三项表示此结点有无右子树,其中:1--有右子树,0--无右子树。 //结点次序(从上到下)必须严格按照先序遍历次序排列。 //文件扩展名没有限制,程序只根据标识“BinaryTree”判定是否二叉树数据文件。 //文件中可以有空行。 //文件可以有注释行,注释行必须以“//”开始,且注释行必须是单独的行,不能混杂在标识行、数据行中 //此二叉树有12个结点 BinaryTree A 1 1 B 1 1 C 0 0 D 1 1 E 0 0 F 0 0 G 1 1 H 1 1 I 0 0 J 1 0 K 0 0 L 0 0

 

而文件格式一般来说,除了前面的注释,空格之类的东西,一般来说,首先是"BinaryTree“等相关标志,保证打开文件正确,并且告诉计算机下面开始读取数据,首先是将这个文本读取到一个二维数组中,代码如图所示:

bool ReadFileToArray( char fileName[],char strLen[100][3],int &nArrlen ) { //fileName存放文件名 //strLen[][3]存放节点的二维数组,数组的三列对应数据文件的三列 //nArrlen返回二叉树节点的个数 FILE *pFile; char str[1000]; //读取第一行文本的字符串 char strTmp[10] = ""; pFile = fopen(fileName,"r"); if ( pFile == NULL ) { cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3