自制leetcode计算题
题目:
1. 将一棵二叉树沿着根节点翻折,例如
1
2 3
4 5
为
4 5
2 3
1
代码:
type nodeReverse struct {root *TreeNodepreLeft *TreeNodepreRight *TreeNode
}func reverse(root *TreeNode) []*TreeNode {if root == nil {return nil}res := []*TreeNode{}queue := []*nodeReverse{&nodeReverse{root, nil, nil}}for len(queue) > 0 {node := queue[0].rootif node == nil {continue}if node.Left != nil {queue = append(queue, &nodeReverse{root: node.Left, preLeft: node})}if node.Right != nil {queue = append(queue, &nodeReverse{root: node.Right, preRight: node})}if node.Left == nil && node.Right == nil {res = append(res, node)}if queue[0].preLeft == nil && queue[0].preRight == nil {node.Left = nilnode.Right = nil}if queue[0].preLeft != nil {node.Right = queue[0].preLeftnode.Left = nil}if queue[0].preRight != nil {node.Left = queue[0].preRightnode.Right = nil}queue = queue[1:]}return res
}
