資料結構 筆記:二叉樹中的結點插入操作
阿新 • • 發佈:2018-11-29
是否能夠在二叉樹的而已結點出插入子結點?
-不能,二叉樹結點的每個結點的子結點是固定的,只存在左孩子和右孩子.
是否需要指定新資料元素(新結點)的插入位置?
-需要指定為左孩子或者右孩子
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 }
插入新結點
插入資料元素
總結:
-二叉樹的插入操作需要指明插入的位置
-插入操作必須正確處理指向父結點的指標
-插入資料元素時需要從堆空間中建立結點
-當資料元素插入失敗時需要釋放結點空間