#include "stdafx.h"
#include <iostream>
using namespace std;
struct node
{
int element;
node *left;
node *right;
int height=-1;
};
struct BST
{
bool isSameRoot=true;
int hight=0;
node* root=NULL ;
void addElement(int n);
void insert(node* Node,int number);
void preorder(node* p);
};
void BST::addElement(int n)
{
insert(root, n);
cout << "Adding" << endl;
}
void BST::insert(node* p,int n)
{
if (p == NULL)
{
p = new node;
p->element = n;
p->left = NULL;
p->right = NULL;
if (isSameRoot)// To skip one of the iterations;
{
hight++;
}
isSameRoot = !isSameRoot;
p->height = hight;
cout << "Element is Added:: " << n<<endl;
cout << "HEIGHT==: " <<p->height<<endl ;
}
else
{
if (n<p->element)
{
insert(p->left, n);
}
else if (n>p->element)
{
insert(p->right, n);
}
}
}
void preorder(node* p)
{
while (p != NULL)
{
cout << p->element << endl;
preorder(p->left);
preorder(p->right);
}
}
int main()
{
BST* tree=new BST ;
tree->addElement(8);
tree->addElement(9);
tree->addElement(45);
tree->addElement(25);
tree->addElement(97);
tree->addElement(78);
preorder(tree->root);//Here is the disease;
return 0;
}
我的問題可能非常基本但很重要;二叉搜索樹,如何將節點連接到根?
很顯然,在BST中我們應該將每個節點連接到根節點;
你可以看看我的代碼,並告訴我如何解決這個問題;
直到preorder()
方法,一切正常/看起來不錯;
我只是沒有使用單根節點;
這是我的問題; 我該如何將節點連接到根節點;
而不是在連接到根的每一個節點,你應該有連接到每個節點他們的父母。 node * left,* right,* parent – flumpb
請將您的示例清理一下。 Tab字符仍然需要在4個空格之前,這樣才能更清晰易讀... – Jeff