2016-07-23 66 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