中序遍历是一种二叉树的遍历方式,按照"左子树-根节点-右子树"的顺序进行遍历。下面是中序遍历二叉树的非递归算法(使用栈实现):
初始化一个空栈。
初始化当前节点为根节点。
当当前节点不为空或者栈不为空时,执行以下操作: a. 如果当前节点不为空,将当前节点压入栈,并将当前节点指向其左子节点。 b. 香港精选免费资料大全手机 如果当前节点为空,说明已经遍历到最左边的节点,此时从栈中弹出一个节点并输出,然后将当前节点指向弹出节点的右子节点。
重复步骤3,直到当前节点为空且栈为空。
下面是一个示例的Python代码实现:
class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left self.right = right def inorderTraversal(root): stack = [] current = root result = [] while current is not None or len(stack) > 0: if current is not None: stack.append(current) current = current.left else: current = stack.pop() result.append(current.val) current = current.right return result
你可以使用上述代码来中序遍历一个二叉树。将根节点传递给函数,它将返回按照中序遍历顺序得到的节点值列表。
二四六天天彩资料大公开78期最新