之前不太理解,只會這樣
#includetypedef int element;
typedef struct treenode node;
typedef struct treenode;
void creat_tree(node **p)
node *head;
creat_tree(&head);
現在可以
#includetypedef int element;
typedef struct treenode* node;
typedef struct treenodebinode,*bitree;
void creat_tree(bitree *p)
bitree head;//等價於node head
creat_tree(&head);
上面有啥區別呢?為啥要區分呢?
第乙個c編譯器報錯= . =
那到底有啥區別?本質上其實木有
用typedef後,binode是個型別名,可以建立變數。此時他代表的是結構體.所以bitree an相當於 struct treenode* an ,也就是 bitree an相當於 node an同理,bitree也可以建立變數,不過他是定義了乙個指向該結構體的指標
如果不用typedef,他只是乙個變數名而已。
二叉樹的二叉鍊錶表示
鏈式儲存結構 二叉樹的鏈式儲存結構是指,用鍊錶來表示一棵二叉樹,即用鏈來指示元素的邏輯關係。通常的方法是鍊錶中每個結點由三個域組成,資料域和左右指標域,左右指標分別用來給出該結點左孩子和右孩子所在的鏈結點的儲存位址。其結點結構為 其中,data域存放某結點的資料資訊 lchild與rchild分別存...
(樹) 二叉樹鍊錶表示
1.二叉樹新節點的插入 create root,val class node def init self self.data 0 self.left none self.right none def create root,val newnode node newnode.data val newn...
樹的同構(靜態鍊錶表示二叉樹的應用)
例 給定兩棵樹t1和t2。如果t1可以通過若干次左右孩子互換就變成t2,則我們稱兩棵樹是 同構 的。例如圖1給出的兩棵樹就是同構的,因為我們把其中一棵樹的結點a b g的左右孩子互換後,就得到另外一棵樹。而圖2就不是同構的。現給定兩棵樹,請你判斷它們是否是同構的。輸入格式 輸入給出2棵二叉樹樹的資訊...