1、在访问右子树时,需要记录右子树的父节点。定义一个堆栈结构保存已访问节点。
2、以根节点为起点,首先访问其左子树,并将已访问节点添加到堆栈。
3、判断堆栈中节点是否有右子树,如果有右子树,则按照上面的逻辑,继续访问右子树。
4、循环结束条件为:堆栈为空。算法逻辑就在于:当遍历子树节点时就放到堆栈中保存,然后再从堆栈中获取节点,继续访问其右子树。完整算法实现如下:
1、在访问右子树时,需要记录右子树的父节点。定义一个堆栈结构保存已访问节点。
2、以根节点为起点,首先访问其左子树,并将已访问节点添加到堆栈。
3、判断堆栈中节点是否有右子树,如果有右子树,则按照上面的逻辑,继续访问右子树。
4、循环结束条件为:堆栈为空。算法逻辑就在于:当遍历子树节点时就放到堆栈中保存,然后再从堆栈中获取节点,继续访问其右子树。完整算法实现如下: