| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | package main/** * Definition for a binary tree node. * type TreeNode struct { *     Val int *     Left *TreeNode *     Right *TreeNode * } */func preorderTraversalOld(root *TreeNode) []int {	result := make([]int, 0)	preorderRecurse(root, &result)	return result}func preorderRecurse(node *TreeNode, result *[]int) {	if node == nil {		return	}	*result = append(*result, node.Val)	preorderRecurse(node.Left, result)	preorderRecurse(node.Right, result)}func preorderTraversal(root *TreeNode) []int {	result := make([]int, 0)	if root == nil {		return result	}	stack := make([]*TreeNode, 0)	curr := root	for len(stack) != 0 || curr != nil {		for curr != nil {			result = append(result, curr.Val)			stack = append(stack, curr)			curr = curr.Left		}		if size := len(stack); size != 0 {			curr = stack[size-1]			stack = stack[:size-1]			curr = curr.Right		}	}	return result}// func main() {// 	t1 := sortedArrayToBST([]int{1, 2, 3, 4, 5, 6, 7})// 	printTree(t1)// 	fmt.Println(preorderTraversal(t1))// }
 |