1 三种方式遍历二叉树
前后中,最简单的使用递归,对于非递归方式:
1) 前序:借助栈,进栈时打印元素。对于每个点,首先向左走到尽头,并将元素进栈输出,之后对栈做循环,当不为空时,弹出栈顶,如果节点有右孩子,则进栈输出,并将root变成右孩子,跳出该栈的循环,对新的root进行判断,当栈为空时跳出大循环。
2 )中序:借助栈,出栈时打印元素。对于每个点,也是向左走走到尽头,进栈,然后对栈做循环,当栈不空时,弹出栈顶,并输出,如果有右孩子,则进栈,并root变成右孩子,跳出栈的循环,对新的root进行判断,当栈为空时跳出大循环。
所以中序和前序,思想完全一样,只是前序是在进栈时输出,中序是在出栈时输出。
3 )后序:目前还有点问题。。
2 层次遍历二叉树
使用队列,首先将根节点入队,之后循环判断队列是否为空,不为空,则出对列输出,出对列后判断该店是否有两个孩子,有则进队,
循环直到队列为空。发现这个简单....