Traverse Tree(遍历树的三种方法)
题目描述:
给定一棵树的头结点;给出先序遍历、中序遍历和后序遍历树的结果。
例子:
先序遍历是先遍历根节点,然后左节点,最后右节点;中序遍历是先遍历左节点,然后根节点最后右节点;后序遍历是最后遍历根节点。先序中序后序是以根节点为标准。
解题思路:
树的遍历主要是利用递归的方式进行查找。
代码如下:
|
|
解题思路2:
当然我们也可以使用非递归的方式对树进行遍历;主要的思路是在于将节点入栈后,根据不同的将左节点和右节点的压栈方式能够得到不同的遍历结果。
对于先根遍历而言,我们将某节点出栈后,先将该节点的右节点入栈,然后左节点入栈;对于中序遍历而言,我们是不断将最左侧的节点入栈,然后在弹出某节点后,将该节点的右侧节点入栈即可实现中序遍历;对于后序遍历而言我们利用了2个栈的方式,首先将根节点放入栈1,每次弹出的节点都放入栈2,并且将弹出节点的左侧和右侧节点压入栈1;不断进行直到栈1为空即可。
|
|