2016-07-23 140 views
1

我知道,在二叉搜索树的元素都基于存在的不平等即性能插入:将节点插入二叉树时遵循什么规则?

if(n->val > val) insert(n->left, val); // root node greater then val insert to left 
else if(n->val < val) insert(n->right, val); // root node less then val insert to left 

// I am ignoring the case when n->val == val here 

我凭什么我要插入的节点进入纯(香草)二叉树,如果好奇的有是一个或所有的二叉树都带有一些额外的属性(带有不等式的二叉搜索树)。

+0

你问如果树是空的话把值放在哪里?或者,使用'std :: set'并让它为你做插入。 – evan

+0

@evan那么如果树是空的,你放置在根节点上。所以在下一个插入中如何知道你应该放在节点的右边还是左边。 – pokche

+0

关于std :: set:我想避免内置的std函数 – pokche

回答

1

General二叉树由节点构成,其中每个节点包含“左”引用,“右”引用和数据元素。树中最顶端的节点称为根。数据订单没有其他限制。

但是二叉树的种类很多。在文学中你可以看到完整,完成,平衡和其他一些。他们都有自己的树结构规则。例如,一个full binary tree是一棵树,其中树叶以外的每个节点都有两个孩子。 A 平衡二叉树具有叶节点的最小可能的最大高度。这些特定的树型会引入额外的属性。

+0

是的,我知道..但是在二叉搜索树的情况下 – pokche

+0

@pokche BT插入操作的好解释可以在这里找到[http://cslibrary.stanford.edu/110/BinaryTrees.html]。看看** Insert()**部分。 – Nikita

+0

@pokche我希望我更新的答案能帮助你更好 – Nikita