コード例 #1
0
        public void insert(BinaryNode node)
        {
            BinaryNode temp = this;

            while (temp != null)
            {
                if (temp.data <= node.data)
                {
                    if (temp.right == null)
                    {
                        temp.right = node;
                        break;
                    }
                    else
                        temp = temp.right;
                }

                else
                {
                    temp.leftNodeCount += 1;

                    if (temp.left == null)
                    {
                        temp.left = node;
                        break;
                    }
                    else
                        temp = temp.left;
                }
            }
        }
コード例 #2
0
 private void PrintKthInorderNode(BinaryNode node, int k)
 {
     if (node.leftNodeCount + 1 == k)
         System.Console.WriteLine("\n\nKth inorder node is: " + node.data);
     else if (node.leftNodeCount + 1 > k)
         PrintKthInorderNode(node.left, k);
     else
         PrintKthInorderNode(node.right, k - (node.leftNodeCount + 1));
 }
コード例 #3
0
        private void InorderTraversal(BinaryNode node)
        {
            if(node != null)
            {
                InorderTraversal(node.left);

                System.Console.Write(node.data + " ");

                InorderTraversal(node.right);
            }
        }
コード例 #4
0
        static void Main(string[] args)
        {
            BinaryNode root = new BinaryNode(7);

            root.insert(new BinaryNode(5));
            root.insert(new BinaryNode(6));
            root.insert(new BinaryNode(4));
            root.insert(new BinaryNode(10));
            root.insert(new BinaryNode(9));
            root.insert(new BinaryNode(12));

            System.Console.Write("Inoder traversal: ");
            root.InorderTraversal();

            // Print kth node of in-order traversal.
            root.PrintKthInorderNode(3);

            System.Console.Read();
        }