博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于二叉树指针和引用的体会(转载)

Posted on 2013-10-06 12:43  皇星客栈--Linux  阅读(339)  评论(0编辑  收藏  举报

举例:创建二叉树,参数用(BiTNode **root)和(BiTNode &root)的区别

分析:前面的是传递的二重指针,后面的是传递指针的引用,效果是一样的,就是修改一级指针的值,让这个指针指向新的内存空间。。

1)二级指针作为函数参数

 

[cpp] view plaincopy
 
  1. void CreateBiTree(BiTNode **root)    //二级指针作为函数参数    
  2. {    
  3.     char ch; //要插入的数据    
  4.     scanf("\n%c", &ch);    
  5.     //cin>>ch;    
  6.     if(ch=='#')    
  7.         *root = NULL;    
  8.     else    
  9.     {    
  10.         *root = (BiTNode *)malloc(sizeof(BiTNode));    
  11.         (*root)->data = ch;    
  12.         printf("请输入%c的左孩子:",ch);    
  13.         CreateBiTree(&((*root)->lchild));    
  14.         printf("请输入%c的右孩子:",ch);    
  15.         CreateBiTree(&((*root)->rchild));    
  16.     }    
  17. }    


2)引用类型作为参数

 

 

[cpp] view plaincopy
 
    1. void CreateBiTree(BiTree &root)  
    2. {  
    3.     char ch;  
    4.     cin>>ch;  
    5.     if(ch=='#')  
    6.         root=NULL;  
    7.     else  
    8.     {  
    9.         root=(BiTNode*)malloc(sizeof(BiTNode));  
    10.         root->data=ch;  
    11.         cout<<"左孩子:"<<endl;  
    12.         CreateBiTree(root->lchild);  
    13.         cout<<"右孩子:"<<endl;  
    14.         CreateBiTree(root->rchild);  
    15.     }  
    16. }