如何迭代地在二进制搜索树中添加元素?

Des*_*ire 1 c# binary-tree visual-studio-2010

   public void Insert(int value)
    {
        if (value < Data)
        {
            if (LeftNode == null)
            {
                LeftNode = new TreeNode(value);
            }
            else
            {
                LeftNode.Insert(value);
            }
        }
        else if (value > Data)
        {
            if (RightNode == null)
            {
                RightNode = new TreeNode(value);
            }
            else
            {
                RightNode.Insert(value);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我编写了以递归方式在BST中添加元素的方法,它检查要添加小于或大于的值并将其添加到适当的位置,但我想知道迭代方法是如何工作的?我需要为我的BST迭代添加方法.

Tud*_*dor 8

好的,这是您的算法的迭代版本:

public void Insert(int value)
{
    TreeNode current = this;
    while (current != null)
    {
        if(current.Data < value)
            if(current.LeftNode == null)
            { current.LeftNode = new TreeNode(value); break; }
            else current = current.LeftNode;
        else
            if(current.RightNode == null)
            { current.RightNode = new TreeNode(value); break; }
            else current = current.RightNode;
    }
}
Run Code Online (Sandbox Code Playgroud)