예제 #1
0
 public void PostOrderTraversal(XBinaryTreeNode node)
 {
     // left -> right -> root
     if (node != null)
     {
         PreorderTraversal(node.leftNode);
         PreorderTraversal(node.rightNode);
         Console.WriteLine(node.index + "\t" + node.value);
     }
 }
예제 #2
0
    public void PostOrderTraversalStack(XBinaryTreeNode node)
    {
        Stack <XBinaryTreeNode> stack = new Stack <XBinaryTreeNode>();

        while (node != null || stack.Count > 0)
        {
            while (node != null)
            {
                stack.Push(node);
                node = node.leftNode;
            }

            if (stack.Count > 0)
            {
                XBinaryTreeNode theNode = stack.Pop();
                Console.WriteLine(theNode.index + "\t" + theNode.value);
                node = theNode.rightNode;
            }
        }
    }
예제 #3
0
 public void LevelOrderTraversal(XBinaryTreeNode node)
 {
     // 二叉树二维结构线性化
     if (node != null)
     {
         Queue <XBinaryTreeNode> queue = new Queue <XBinaryTreeNode>();
         queue.Enqueue(node);
         while (queue.Count > 0)
         {
             XBinaryTreeNode theNode = queue.Dequeue();
             Console.WriteLine(theNode);
             if (theNode.leftNode != null)
             {
                 queue.Enqueue(theNode.leftNode);
             }
             if (theNode.rightNode != null)
             {
                 queue.Enqueue(theNode.rightNode);
             }
         }
     }
 }
예제 #4
0
 public int FindNode(XBinaryTreeNode node)
 {
     throw new NotImplementedException();
 }
예제 #5
0
 public bool InsertNode(int index, XBinaryTreeNode node)
 {
     throw new NotImplementedException();
 }