码迷,mamicode.com
首页 > 其他好文 > 详细

创建二叉树、创建链表等

时间:2016-06-04 00:18:46      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:

 方法一:
1
#include <iostream>//创建二叉树,要用二级指针 2 3 using namespace std; 4 5 typedef struct TreeNode 6 { 7 char data; 8 struct TreeNode *left; 9 struct TreeNode *right; 10 }BiTree; 11 12 void creatBitree(BiTree **T) 13 { 14 char ch; 15 cin >> ch; 16 if (ch == #) 17 { 18 *T = NULL; 19 } 20 else 21 { 22 *T = (BiTree*)malloc(sizeof(TreeNode)); 23 (*T)->data = ch; 24 cout << (*T)->data << endl; 25 creatBitree(&(*T)->left); 26 creatBitree(&(*T)->right); 27 } 28 } 29 30 int main(void) 31 { 32 BiTree *T = NULL; 33 creatBitree(&T); 34 35 return 0; 36 }
调试结果:
技术分享
使用此方法(二级指针)时,在创建函数内部的变量的监视如下:
技术分享

 方法二:
1
#include <iostream>//这种做法是错的,没有用二级指针,二叉树是创建成功了,但是只在creatBitree中有效,退出该函数就被系统释放了。传递到函数的T只是一个副本。 2 3 using namespace std; 4 5 typedef struct TreeNode 6 { 7 char data; 8 struct TreeNode *left; 9 struct TreeNode *right; 10 }BiTree; 11 12 void creatBitree(BiTree *T)//但是这种方法将创建函数的参数改成引用就可以了:void creatBitree(BiTree * &T),(其他地方都不用改) 13 { 14 char ch; 15 cin >> ch; 16 if (ch == #) 17 { 18 T = NULL; 19 } 20 else 21 { 22 T = (BiTree*)malloc(sizeof(TreeNode)); 23 T->data = ch; 24 cout << T->data << endl; 25 creatBitree(T->left); 26 creatBitree(T->right); 27 } 28 } 29 30 int main(void) 31 { 32 BiTree *T = NULL; 33 creatBitree(T); 34 35 return 0; 36 }
调试结果见方法四!!是一样的!!
 方法三:这种方法与前两种不一样的是定义结构体的时候,就定义了一个结构体指针。
1
#include <iostream> 2 3 using namespace std; 4 5 typedef struct TreeNode 6 { 7 char data; 8 struct TreeNode *left; 9 struct TreeNode *right; 10 }*BiTree; 11 12 void creatBitree(BiTree *T)//其实此处就相当于一个二级指针,跟方法一类似,此处的BiTree已经是一个指针类型,方法一的只是普通类型。 13 { 14 char ch; 15 cin >> ch; 16 if (ch == #) 17 { 18 *T = NULL; 19 } 20 else 21 { 22 *T = (BiTree)malloc(sizeof(TreeNode)); 23 (*T)->data = ch; 24 cout << (*T)->data << endl; 25 creatBitree(&(*T)->left); 26 creatBitree(&(*T)->right); 27 } 28 } 29 30 int main(void) 31 { 32 BiTree T = NULL;//此处相当于一个一级指针。 33 creatBitree(&T);//参数是一级指针的地址 34 35 return 0; 36 }
调试结果如下:
技术分享

方法四:其实这种方法跟方法二一样,用一级指针,参数传递时用引用。
1
#include <iostream> 2 3 using namespace std; 4 5 typedef struct TreeNode 6 { 7 char data; 8 struct TreeNode *left; 9 struct TreeNode *right; 10 }*BiTree; 11 12 void creatBitree(BiTree &T) 13 { 14 char ch; 15 cin >> ch; 16 if (ch == #) 17 { 18 T = NULL; 19 } 20 else 21 { 22 T = (BiTree)malloc(sizeof(TreeNode)); 23 T->data = ch; 24 cout << T->data << endl; 25 creatBitree(T->left); 26 creatBitree(T->right); 27 } 28 } 29 30 int main(void) 31 { 32 BiTree T = NULL; 33 creatBitree(T); 34 35 return 0; 36 }
调试结果如下:
技术分享

 

创建二叉树、创建链表等

标签:

原文地址:http://www.cnblogs.com/hhboboy/p/5557812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!