虽然我们能用递归创建二叉树,但是我们是否真正的理解真正的递归过程呢,其实,递归函数的内部还是挺复杂的,想真正弄明白递归也是要下一番功夫的,虽然说,递归算法有效的减少了某些问题的编程,但是它只能简化程序编码,却不能降低程序的时间和空间复杂度,相反,由于执行过程依赖函数或过程的重复调用,会增加函数的时间复杂度.而且返回函数的地址保存需要占用系统栈,从而增加的空间的复杂度。下面是我用栈实现了二叉树的非递归创建.
算法思想:首先,我们对二叉树进行扩展,然后按先序遍历的顺序输入节点的信息,然后我们设置一个标志位flag,如果flag=0,创建当前节点的左孩子节点,当flag=1时,创建当前节点的右孩子节点.具体的分为以下四种情况: