大名鼎鼎的反转二叉树,面试谷歌都要折戟的超级难题,哈哈哈
package main
import . "nc_tools"
/*
//递归,
func Mirror( pRoot *TreeNode ) *TreeNode {
// write code here
if pRoot == nil {
return pRoot
}
Mirror(pRoot.Left)
Mirror(pRoot.Right)
pRoot.Left, pRoot.Right = pRoot.Right, pRoot.Left
return pRoot
}
*/
//迭代
func Mirror( pRoot *TreeNode ) *TreeNode {
if pRoot == nil {
return pRoot
}
queue := []*TreeNode{pRoot}
for len(queue) > 0 {
node := queue[0]
queue = queue[1:]
node.Left, node.Right = node.Right, node.Left
if node.Left != nil {
queue = append(queue, node.Left)
}
if node.Right != nil {
queue = append(queue, node.Right)
}
}
return pRoot
}

京公网安备 11010502036488号