【发布时间】:2014-12-21 13:21:28
【问题描述】:
我试图了解递归的工作原理以及遍历二叉树的工作原理。
好吧,据我所知,递归是在自身内部调用一个函数。有点像循环。
现在我得到了关于如何在二叉树上进行 postOrder 遍历的代码。
(注意这不是我的代码,我只是想通过这段代码了解递归是如何工作的)
# Definition for a binary tree node
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# @param root, a tree node
# @return a list of integers
def postorderTraversal(self, root):
solution = []
self.postorderTraversalRec(root, solution)
return solution
def postorderTraversalRec(self, root, solution):
if root == None:
return
self.postorderTraversalRec(root.left, solution)
self.postorderTraversalRec(root.right, solution)
solution.append(root.val)
现在据我了解,PostOrder 遍历是right-left-middle,所以先是子级,然后是父级。
这是我认为发生递归的 2 行。
self.postorderTraversalRec(root.left, solution)
self.postorderTraversalRec(root.right, solution)
据我了解,第一行告诉程序递归遍历所有左侧节点,直到它到达末尾。然后它告诉程序遍历所有左侧节点直到它到达末尾。
但我面临的问题是,我无法理解这是如何进行 PostOrder 遍历的。对我来说,它看起来像一个 PreOrder 遍历。
【问题讨论】: