Chinaunix首页 | 论坛 | 博客
  • 博客访问: 570450
  • 博文数量: 141
  • 博客积分: 3425
  • 博客等级: 中校
  • 技术积分: 1609
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-23 15:55
文章分类

全部博文(141)

文章存档

2019年(5)

2011年(19)

2010年(36)

2009年(13)

2008年(50)

2007年(18)

分类: C/C++

2019-04-02 19:55:23

摘自维基百科


preorder(node)
if (node == null) return
visit(node)
preorder(node.left)
preorder(node.right)




iterativePreorder(node)
if (node == null) return
s <-- empty stack
s.push(node)
while (not s.isEmpty())
node <-- s.pop()
visit(node)
// right child is pushed first so that left is processed first
if (node.right != null) s.push(node.right)
if (node.left != null) s.push(node.left)


inorder(node)
if (node == null) return
inorder(node.left)
visit(node)
inorder(node.right)


iterativeInorder(node)
s <-- empty stack
while (not s.isEmpty() or node != null)
if (node != null)
s.push(node)
node <-- node.left
else
node <-- s.pop()
visit(node)
node <-- node.right




postorder(node)
if (node == null) return
postorder(node.left)
postorder(node.right)
visit(node)


iterativePostorder(node)
s <-- empty stack
lastNodeVisited <-- null
while (not s.isEmpty or node != null)
if (node != null)
s.push(node)
node <-- node.left
else
peekNode <-- s.peek()
// if right child exists and traversing node
// from left child, then move right
if (peekNode.right != null and lastNodeVisited != peekNode.right)
node <-- peekNode.right
else
visit(peekNode)
lastNodeVisited <-- s.pop()






阅读(331) | 评论(0) | 转发(0) |
0

上一篇:linux环境下cscope使用

下一篇:ucosii soft timer

给主人留下些什么吧!~~