Binary Tree Postorder Traversal

来源:互联网 发布:向日葵虚拟局域网软件 编辑:程序博客网 时间:2024/06/05 07:18

 

题目描述:

Given a binary tree, return the postorder traversal of its nodes' values.

For example:
Given binary tree {1,#,2,3},

 

return [3,2,1].

Note: Recursive solution is trivial, could you do it iteratively?

大意:后续遍历二叉树

 

解题思路:

1,与其他遍历方式不同,后续遍历是最为麻烦的,因为栈内元素出栈需要条件(节点指针左右子树都为空,或者该节点的左子树或者右子树刚才已经弹出(刚才弹出的不能为空))

2,所有元素都必须先入栈

 

代码部分:

 

             

图示:

 

  代码解析:

1,大部分都先入栈了,只是后来碰到了根节点,不满足弹出条件,接着将右子树入栈。

2,代码中的pre不为空,一定要判断,因为pre本身的意思是刚才弹出的元素。如果不加该条件,那么pre为空,可以为根节点的左子树(左子树为空的特殊二叉树),就会将1弹出了,不再是后续遍历了。

0 0
原创粉丝点击