題目:請完成一個函數(shù),輸入一個二叉樹,該函數(shù)輸出它的鏡像.
代碼:
func mirrorTree(rootNode:inout TreeNode?) -> Void {
if rootNode == nil || (rootNode?.leftChild == nil && rootNode?.rightChild != nil) {
return
}
let tempNode:TreeNode = rootNode!
swap(&tempNode.leftChild, &tempNode.rightChild)
if rootNode?.leftChild != nil {
mirrorTree(rootNode: &tempNode.leftChild)
}
if rootNode?.rightChild != nil {
mirrorTree(rootNode: &tempNode.rightChild)
}
}
測試代碼:
var util:TreeUtil = TreeUtil()
var rootStr:String = "124##5##36##7##"
var preRootNode:TreeNode?
util.rootList = rootStr
util.createTreeByPreOrder(root: &preRootNode)
var treeOrder:TreeOrder = TreeOrder()
var mirrorTree:MirrorTree = MirrorTree()
mirrorTree.mirrorTree(rootNode: &preRootNode)
print("鏡像")
treeOrder.levelOrder(preRootNode)
print()