मेरे विषय को पढ़ने के लिए धन्यवाद। मैं C # पर टेस्ट डोम के साथ थोड़ा अभ्यास कर रहा हूं। वर्तमान में मैं जो अभ्यास करने की कोशिश कर रहा हूं वह निम्नलिखित है: / BinarySearchTree / 484 testId = 21 & amp; ? testDifficulty = हार्ड

मेरा वर्तमान परिणाम:

  • उदाहरण मामला: सही उत्तर
  • सरल मामले: सही उत्तर
  • नियमित मामले: गलत जवाब
  • बढ़त के मामले: गलत जवाब
  • प्रदर्शन परीक्षण: गलत जवाब

मेरे द्वारा अब तक लिखे गए कोड को आप नीचे पढ़ सकते हैं।

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

public class Node
{
    public int Value { get; set; }                      // Value of {node} == integer (1,2,3,4,5)
    public Node Left { get; set; }                      // Reference to left node (n1, n2, n3) == Node.
    public Node Right { get; set; }                     // Reference to right node (n1, n2, n3) == Node.
    public Node(int value, Node left, Node right)       
    {
        Value = value;                                  // (int)
        Left = left;                                    // (node)
        Right = right;                                  // (node)
    }
}

public class BinarySearchTree
{
    public static bool IsValidBST(Node root)
    {
        if (root.Left == null && root.Right == null)
            return true;

        else if (root.Left == null)
        {
            // Checking root.Right.Value
            if (root.Value <= root.Right.Value)
                return true;

            else
                return false;
        }
        else if (root.Right == null)
        {
            // Checking root.Left.Value
            if (root.Value > root.Left.Value)
                return true;
            else
                return false; 
        }
        else
        {
            // Checking both Values
            if (root.Value > root.Left.Value && root.Value <= root.Right.Value)
                return true;
            else
                return false;
        }
    }


    public static void Main(string[] args)
    {
        Node n1 = new Node(1, null, null);
        Node n3 = new Node(3, null, null);
        Node n2 = new Node(2, n1, n3);

        // Execute function and write it to the console
        Console.WriteLine(IsValidBST(n2));
        Console.ReadLine();
    }
}

मुझे नहीं पता कि टेस्ट पास करने के लिए क्या लागू करना है। मैं नहीं चाहता कि आप मुझे लिखित-कोड दें, लेकिन अभ्यास के बारे में अधिक जानकारी। ध्यान रखें कि मेरा वर्तमान-कोड साफ-सुथरा है। आप सभी को धन्यवाद।

c#
1
Lycaon 24 नवम्बर 2015, 18:22

3 जवाब

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

यदि आप null नहीं हैं और फिर इन परिणामों की जाँच कर रहे हैं, तो आप उन IsValidBST और IsValidBST कॉल करके उन अन्य नोड्स की जांच करें। अभी आप केवल पेड़ में उतरने के बजाय रूट नोड का परीक्षण करते हैं

1
Erik Johnson 24 नवम्बर 2015, 15:30

उत्तर कोड:

if (root.Value == value) return true;

if (root.Left != null && value < root.Value)
    if (Contains(root.Left, value)) return true;

if (root.Right != null && value > root.Value)
    if (Contains(root.Right, value)) return true;

return false;

मेरी पोस्ट <पढ़ें / ए> एक ही सवाल का।

1
Adam Cox 11 अगस्त 2017, 00:32

आप सभी ऊपरी नोड मानों की जाँच नहीं कर रहे हैं। आपके पास सभी ऊपरी नोड्स की सरणी / सूची होनी चाहिए, ताकि आप इसकी जांच कर सकें।

और आपको रिकर्सन कॉल का भी उपयोग करना चाहिए। ऐशे ही

IsValidBST(Node root, List<int> upperValues = null) 
{
 ... 
 bool childIsValid = IsValidBST (root.Left, upperValuesLeft ) && IsValidBST(root.Right, upperValuesRight )
}
2
Valentin 24 नवम्बर 2015, 15:30