0

我需要继续处理二叉树的节点,但我不确定如何将其作为输入传递。假设我有树:

     11
    12 13
   14 15 16
  17 18 19 20

然后我有一个通用类Node<T>

public class Node<T>
    {
        public T Value { get; set; }

        public List<Node<T>> Children { get; set; }

        public bool HasChild { get; set; }

        public bool HasParent { get; set; }

        public Node(T value)
        {
            this.Value = value;
            this.Children = new List<Node<T>>();
        }
    } 

我应该将每个节点添加到节点列表中 - 子节点,但是以什么顺序,所以我保持树的层次结构?

4

4 回答 4

0

给用户一个选择,首先选择要输入的订单,例如 Preorder/Inorder/Postorder。然后相应地处理输入。希望您能够编写代码。

于 2013-06-03T16:48:55.187 回答
0

树的一种表示形式是一系列对;每个值和它的父级(null对于根)。您的树可能表示为:

空 11
11 12
11 13
12 14
13 15
13 16
...
于 2013-06-03T16:56:15.270 回答
0

像这样的东西

              public static void Main()
              {
               Node root = new Node(50);
               BinaryTree BT = new BinaryTree(root);
               Node left = new Node(17);
               Node right = new Node(76);
               root.left = left;
               root.right = right;
               Node lleft = new Node(9);
               Node lright = new Node(23);
               Node rleft = new Node(54);
               root.left.left = lleft;
               root.left.right = lright;
               root.right.left = rleft;
               Node llright = new Node(14);
               Node llrleft = new Node(12);
               root.left.left.right = llright;
               root.left.left.right.left = llrleft;
               Node lrright = new Node(19);
               root.left.right.left = lrright;
               Node rlright = new Node(72);
               Node rlrleft = new Node(67);
               root.right.left.right = rlright;
               root.right.left.right.left = rlrleft;

                      }
于 2013-07-12T20:15:19.063 回答
0

您可以在输入的第一行给出两个整数,例如“n”节点数和“m”弧数。然后您提供带有节点标识符的“n”行,然后提供带有弧的“m”行。

在解析标识符时,您可以创建 Node 对象,然后在传递弧时正确添加子对象。

您的图表将如下所示:

10 12
11
12
13
14
15
16
17
18
19
20
11 12
11 13
12 14
12 15
13 15
13 16
14 17
14 18
15 18
15 19
16 19
16 20

这样你就忘记了弧和给出的顺序。您可以在之后识别头部,因为它将是唯一没有父节点的节点。

于 2013-06-04T11:38:14.180 回答