[問題] 二元搜尋樹插入節點的迴圈改遞迴

作者: cat99961 (阿湯)   2020-05-04 17:53:42
我要將二元搜尋樹的迴圈改成遞迴(改原程式的insert_node函數)
原程式如下:
#include <stdlib.h>
struct tree /* 樹的結構宣告 */
{
int data; /* 節點資料 */
struct tree *left; /* 指向左子樹的指標 */
struct tree *right; /* 指向右子樹的指標 */
};
typedef struct tree treenode; /* 樹的結構新型態 */
typedef treenode *btree; /* 宣告樹節點指標型態 */
/*
作者: firejox (Tangent)   2020-05-04 18:34:00
沒接上回傳的結點當然會失敗你是用指標不是用參考,所以需要加上賦值
作者: elysium5290 (他塌塌塌塌)   2020-05-05 13:04:00
樓上正解,你改寫遞迴但你遞迴的部分怎麼會沒有處理return node呢?
作者: firejox (Tangent)   2020-05-05 17:24:00
current->left= insert_node(current->left,value) 這樣
作者: elysium5290 (他塌塌塌塌)   2020-05-05 18:35:00
稍微回一下大概btree insert_node(btree root, int value){if(NULL != root){If(root->data > value)root->left = insert_node(root->left, value);elseroot->right = insert_node(root->right, value);return root;}else{btree newnode;//以下大概newnode = malloc()return newnode;}}

Links booklink

Contact Us: admin [ a t ] ucptt.com