如何初始化树节点进行调试?

How do I initialize a tree node to debug?

愚蠢的问题,但对二叉树来说是新问题

我有这个例子,我想从 leetcode 调试。要进行调试,我需要将有效值作为 q 和 p 发送。但是我似乎无法按照要求的方式初始化我的节点来测试答案和学习。

public class TreeNode
    {
      public int val;
      public TreeNode left;
      public TreeNode right;
    public TreeNode(int val = 0, TreeNode left = null, TreeNode right = null)
        {
            this.val = val;
            this.left = left;
            this.right = right;
         }
    }
    public bool IsSameTree(TreeNode p, TreeNode q)
    {
        if (p == null && q == null) return true;
        if (p == null || q == null) return false;

        if (p.val == q.val)
        {
            return IsSameTree(p.left, q.left) && IsSameTree(p.right, q.right);
        }

        return false;
    }

    static void Main(string[] args)
    {
        Program pr = new Program();

my problem is here, I need to send an exmaple of p and q as p = [1,2,3], q = [1,2,3] and output true; or Input: p = [1,2], q = [1,null,2] Output: false

输入:p = [1,2,1], q = [1,1,2] 输出:假

问题:如何用前面的例子初始化p和q? 所以方法 IsSameTree() 得到它们;

 TreeNode p = new TreeNode();
        p.val = 1;
        p.left = new TreeNode();
        p.left.val = 2;
        p.right = new TreeNode();
        p.right.val = 1;

        TreeNode q = new TreeNode();
        q.val = 1;
        q.left = new TreeNode();
        q.left.val = 1;
        q.right = new TreeNode();
        q.right.val = 2;
        bool isIdentical = pr.IsSameTree(p,q);

我不明白你的问题是什么。您是否期望 p 和 q 相等?然后你应该以同样的方式初始化它们。此外,您正在检查 p agains p,这将 return 基本相等。

试试这个:

TreeNode p = new TreeNode(1, new TreeNode(2), new TreeNode(3));
TreeNode q = new TreeNode(1, new TreeNode(2), new TreeNode(3));
bool isIdentical = pr.IsSameTree(p,q);

Answer

表示:
输入:p = [1,2], q = [1,null,2] 输出:假

TreeNode p = new TreeNode(1, left: new TreeNode(val:2));
   TreeNode q = new TreeNode(val:1, left:null, right: new TreeNode(2));
   bool isIdentical = pr.IsSameTree(p,q);