二叉树的前序遍历

问题描述:

给你二叉树的根节点root,返回它节点值的前序遍历。

示例:

输入:head = [1, null, 2, 3]

输出:[1, 2, 3]

 解题思路:

递归二叉树

package main

import (
	"fmt"
)

type treeNode struct {
	value int
	left  *treeNode
	right *treeNode
}

func (t *treeNode) insert(v *treeNode) {
	if t.value == v.value {
		return
	}
	if v.value > t.value {
		if t.right == nil {
			t.right = v
		} else {
			t.right.insert(v)
		}
	} else {
		if t.left == nil {
			t.left = v
		} else {
			t.left.insert(v)
		}
	}
}

// preOrder 前序遍历 根 -> 左子树 -> 右子树
func preOrder(t *treeNode) {
	if t != nil {
		fmt.Println(t.value)
	}

	if t.left != nil {
		preOrder(t.left)
	}
	if t.right != nil {
		preOrder(t.right)
	}
}

func initTree(arr []int) *treeNode  {
	if len(arr) == 0 {
		return nil
	}

	tree := &treeNode{
		value: arr[0],
	}
	for _, v := range arr[0:] {
		tree.insert(&treeNode{
			value: v,
		})
	}
	return tree
}

func main()  {
	binaryTree := initTree([]int{1, 2, 3})
	preOrder(binaryTree)

	binaryTreeOne := initTree([]int{1, 2})
	preOrder(binaryTreeOne)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值