C語言 遞迴實現二叉排序樹的插入

陽光大男孩!發表於2020-12-03

前言

二叉排序樹,是用於方便查詢的一種樹。

特徵為,左子樹的值小於根節點的值,右子樹的值大於根節點的值。

插入思路

  1. 當樹為空時,新建節點,並讓其成為根節點。
  2. 如果值相同,那麼代表插入失敗。
  3. 如果值大於當前結點,應該插入到右子樹。
  4. 如果值小於當前結點,應該插入到左子樹。
  5. 整體是一個遞迴的思想。

二叉排序法

int insertNodeBinarySortedTree(BinarySortedTree T,int value)
{
    // 空樹則當根節點
    if(T==NULL)
    {
        T =(TreeNode*)malloc(sizeof(TreeNode));
        T->data=value;
        T->lchild = NULL;
        T->rchild = NULL;
        return 1;
    }else if(value==T->data)
    {
        return 0;//已經存在該結點,插入失敗
    }
    else if(value<T->data)
    {
        return insertNodeBinarySortedTree(T->lchild,value);
    }
    else
    {
        return insertNodeBinarySortedTree(T->rchild,value);
    }
}

相關文章