#include<stdlib.h>
#include<malloc.h>
#include<iostream>
#include<stack>
#include<queue>
using namespace std;
typedef char ElemType;
typedef struct BtNode
{
BtNode *leftchild;
BtNode *rightchild;
ElemType data;
}BtNode,*BinaryTree;
//購買結點
BtNode *Buynode()
{
BtNode *p=(BtNode *)malloc(sizeof(BtNode));
if(NULL==p) exit(1);
memset(p,0,sizeof(BtNode));
return p;
}
void *Freenode(BtNode *ptr)
{
free(ptr);
}
//方法一
//前序創建二叉樹
void *PreCreateTree(BinaryTree *ptr)
{
char ch;
cin>>ch;
if(ch!='#'||ptr!=NULL)
{
*ptr=Buynode();
(*ptr)->data=https://bbs.csdn.net/topics/ch;
PreCreateTree(&(*ptr)->leftchild);
PreCreateTree(&(*ptr)->rightchild);
}
}
int main()
{
BinaryTree root=NULL;
PreCreateTree(&root);
}
為什么方法一中形參是*ptr。是ptr不行嗎?弄得函式中又*又&的,*ptr是規范嗎?
ptr的話傳入root也是一指標,也能起同樣作用,又不用那么復雜。
上面代碼怎么創建一顆空二叉樹?
uj5u.com熱心網友回復:
1.使用*ptr,是你前面傳參用的&root。如果直接傳root,main()里面的root不會變。這是指標這塊的內容2.二叉樹你可以看看原理你就清楚了
uj5u.com熱心網友回復:
謝了,后面看到了一些很好的解釋解決了問題1。有好多創建二叉樹的方法,都差不多,也明白了一些。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/80178.html
標籤:C語言
上一篇:用的c#求各位大佬幫忙指導報錯
