вставка дерева что не так с моим кодом? почему бы не дать вывод? f // ******* 77777 %%%%% - PullRequest
0 голосов
/ 22 октября 2019
#include<bits/stdc++.h>
using namespace std;

struct Node
{
    int data;
    struct Node* left;
    struct Node* right;
};
Node *root=NULL;

Node *newNode(int data)
{
    Node* temp=new Node();
    temp->data=data;
    temp->left=temp->right=NULL;
    return temp;
}

void preorder(Node* root)
{
    if(root)
    {
    cout<<root->data<<endl;
    preorder(root->left);
    preorder(root->right);
    }
}

Node *Search(Node* root,int parent)
{
    if(root->data==parent)
    {
        return root;
    }
    if(root==NULL)
    {
        return NULL;
    }
    Node* temp=Search(root->left,parent);
    if(temp)
    {
        return temp;
    }
    Search(root->right,parent);
}


int main()
{
    int n,parent,child,i;
    char c;
    cin>>n;
    root=newNode(1);
    Node *s;
    for(i=0;i<n-1;i++)
    {
        cout<<"ek for"<<endl;
        cin>>parent;
        cin>>child;
        cin>>c;
        s=Search(root,parent);
        if(c=='L')
        {
            s->left=newNode(child);
        }
        else
        {
            s->right=newNode(child);
        }
    }
    preorder(root);
}

Я пытаюсь вставить в дерево в соответствии с символом, если задан символ L, тогда узел будет вставлен слева от этого узла. Аналогично для символа R. Но цикл не работает должным образом. рано заканчивать. что не так с моим кодом ?? например, если ввод 1 2 R и 1 3 л, то 1 / \ 3 2

...