資料結構 筆記:樹中結點的插入操作
阿新 • • 發佈:2018-11-14
插入的方式
-插入新結點
·bool insert(TreeNode<T>* node)
-插入資料元素
·bool insert(const T& value,TreeNode<T>* parent)
如何指定新結點在樹裡面的位置
插入新結點之前,必須先找到前驅結點
bool insert(TreeNode<T>* node) { bool ret = true; if(node != NULL) { if(this->m_root == NULL) { node->parent = NULL; this->m_root = node; } else { GTreeNode<T>* np = find(node->parent); if( np != NULL) { GTreeNode<T>* n = dynamic_cast<GTreeNode<T>*>(node); if( np->child.find(n) < 0) { np->child.insert(n); } } else { //丟擲異常 } } } else { //丟擲異常 } return ret; }
插入資料元素
bool insert(const T& value,TreeNode<T>* parent) { bool ret = true; GTreeNode<T>* node = new GTreeNode<T>(); if(node != NULL) { node->value = value; node->parent = parent; insert(node); } else { //丟擲異常 } return ret; }
總結:
插入操作時構建樹的唯一操作
-執行操作時必須指明結點間的父子關係
-插入操作必須正確處理指向父節點的指標
-插入資料元素時需要從堆空間中建立結點