描述
给定一个二叉树,返回它的中序遍历。
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [1,3,2]
进阶:递归算法很简单,你可以通过迭代算法完成吗?
思路
利用栈的先进后出特性实现中序遍历
实现
func inorderTraversal ( root * TreeNode) [ ] int {
valueList := make ( [ ] int , 0 )
stack := make ( [ ] * TreeNode, 0 )
curNode := root
for curNode != nil || len ( stack) > 0 {
for curNode != nil {
stack = append ( stack, curNode)
curNode = curNode. Left
}
top := stack[ len ( stack) - 1 ]
stack = stack[ 0 : len ( stack) - 1 ]
valueList = append ( valueList, top. Val)
curNode = top. Right
}
return valueList
}
func inorderTraversal ( root * TreeNode) [ ] int {
valueList := make ( [ ] int , 0 )
if root == nil {
return valueList
}
MidTraversal ( root. Left)
valueList = append ( valueList, root. Val)
MidTraversal ( root. Right)
return valueList
}