中序遍历构造树【Go】

func buildTree(nums []int) *TreeNode { if len(nums) == 0 { return nil } root := &TreeNode{Val: nums[0]} q := []*TreeNode{root} // 队列 for i := 1

func buildTree(nums []int) *TreeNode {
	if len(nums) == 0 {
		return nil
	}
	root := &TreeNode{Val: nums[0]}
	q := []*TreeNode{root} // 队列
	for i := 1; i < len(nums); {
		node := q[0] // 出队
		q = q[1:]
		if nums[i] != -1 {
			node.Left = &TreeNode{Val: nums[i]}
			q = append(q, node.Left)
		}
		i++
		if i < len(nums) && nums[i] != -1 {
			node.Right = &TreeNode{Val: nums[i]}
			q = append(q, node.Right)
		}
		i++
	}
	return root
}

LICENSED UNDER CC BY-NC-SA 4.0
Comment