1. 程式人生 > >資料結構 筆記:二叉樹中的結點插入操作

資料結構 筆記:二叉樹中的結點插入操作

是否能夠在二叉樹的而已結點出插入子結點?

-不能,二叉樹結點的每個結點的子結點是固定的,只存在左孩子和右孩子.

是否需要指定新資料元素(新結點)的插入位置?

-需要指定為左孩子或者右孩子

enum BTNodePos
{
    ANY,
    LEFT,
    RIGHT
};

插入的方式

-插入新結點

·bool insert(TreeNode<T>* node)

·bool insert(TreeNode<T>* node,BTNodePos pos)

-插入資料元素

·bool insert(cosnt T& value,TreeNode<T>* parent)

·bool insert(const T& value,TreeNode<T>* parent,BTNodePos pos)

指定位置的結點插入

bool insert(n, np, pos);

//pos = ANY
if(np->left == NULL)
{
    np->left = n;
}
else if( np->right == NULL)
{
    np->right = n;
}
else
{
    ret = false;
}

//pos = LEFT
if(np->left == NULL)
{
    np->left = n;
}
else
{
    ret = false;
}

//pos = RIGHT
if(np->right == NULL)
{
    np->right = n;
}
else
{
    ret = false
}

插入新結點

插入資料元素

總結:

-二叉樹的插入操作需要指明插入的位置

-插入操作必須正確處理指向父結點的指標

-插入資料元素時需要從堆空間中建立結點

-當資料元素插入失敗時需要釋放結點空間