** प्रिंट डिक्शनरी के बाद सभी मान समान हैं। क्यों?? समस्या कहाँ है??**** प्रिंट डिक्शनरी के बाद सभी मान समान हैं। क्यों?? समस्या कहाँ है??**** प्रिंट डिक्शनरी के बाद सभी मान समान हैं। क्यों?? समस्या कहाँ है??**** प्रिंट डिक्शनरी के बाद सभी मान समान हैं। क्यों?? समस्या कहाँ है??**

डिक्शनरी में मैंने एक ऑब्जेक्ट के रूप में इंट और वैल्यू के रूप में कुंजी को जोड़ा (नोड) डिक्शनरी में मैंने एक ऑब्जेक्ट (नोड) के रूप में कुंजी को इंट और वैल्यू के रूप में जोड़ा। एक वस्तु के रूप में int और मूल्य के रूप में (नोड)

using System;
using System.Collections.Generic;
using System.Linq;

namespace Tree1
{
    public class Node
    {
        public int data;
        public Node left, right;
    }

    public class NewNode
    {
        Node node = new Node();
        public Node createNode(int key)
        {
            node.data = key;
            //Console.WriteLine(key);
            node.left = node.right = null;
            return node;
        }

    }

    public class Print
    {
        Node node = new Node();
        public void inorder(Node root)
        {
            if (root == null)
                return;
            inorder(node.left);
            //Console.WriteLine(node.data+" ");
            inorder(node.right);
        }

    }

    public class BinaryTree
    {
        Node root = new Node();
        NewNode newNode = new NewNode();
        public Node createTree(int[] parent, int n)
        {
            Dictionary<int, Node> map = new Dictionary<int, Node>();

            for (int i = 0; i<n; i++)
            {
                map.Add(i,newNode.createNode(i));
                //Console.WriteLine(map.Keys + " " + map[i].data);
            }

           
            foreach (var pair in map)
            {
                int key = pair.Key;
                Node value = pair.Value;
                Console.WriteLine(key + "/" + value.data);
            }
            

            root = null;

            for(int i = 0;  i<n; i++)
            {
                if(parent[i] == -1)
                {
                    root = map[i];
                }
                else
                {
                    Node ptr = map[parent[i]];
                    //Console.WriteLine(parent[i]);
                    
                    //Console.WriteLine(ptr.data);
                    if (ptr.left != null)
                    {
                        ptr.right = map[i];
                    }
                    else
                    {
                        ptr.left = map[i];
                    }
                }
            }

           
            return root;
        }

    }



    class Program
    {
        static void Main(string[] args)
        {
            
            int[] parent = new int[] { -1, 0, 0, 1, 2, 2, 4, 4};

            BinaryTree binaryTree = new BinaryTree();
            Node root = new Node();
            root = binaryTree.createTree(parent, parent.Length);


            Print print = new Print();
            print.inorder(root);



            Console.ReadLine();
        }
    }
}
[enter image description here][1]
-1
md zahid fesabelilla 8 सितंबर 2021, 17:59
createNode एक नया नोड नहीं लौटाता - बस वही उदाहरण।
 – 
Daniel A. White
8 सितंबर 2021, 18:01

1 उत्तर

सबसे बढ़िया उत्तर

आपको अपने नोड वर्ग में एक कंस्ट्रक्टर की आवश्यकता है।

public class Node
{
    public int data;
    public Node left, right;
    
     public Node(int data){
       this.data = data;
     }
}

फिर जब आप एक नया नोड बनाते हैं, तो आप उस मान को पास कर सकते हैं जिसे आप डेटा के रूप में सेट करना चाहते हैं।

var newNode = new Node(value);
0
John Rodriguez 8 सितंबर 2021, 18:07
यह सुनकर अच्छा लगा @mdzahidfesabelilla खुशी है कि मैं मदद कर सका
 – 
John Rodriguez
8 सितंबर 2021, 23:49