| 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))
 
- // }
 
 
  |