构造二叉树时,默认二叉树是一颗满二叉树,数组的顺序则是满二叉树的层次遍历结果,其中’#‘代表空节点,以此来构造一颗二叉树。
在数组中,一颗满二叉树节点对应的下标有这样的对应关系:
当根节点的数组下标是index时,则左节点对应的value是2 *index +1,右节点对应的value是2 * index +2,当创建好该根节点后,按照递归的方式依次创建对应的左子树和右子树;需注意其子节点对应的value如果超过数组下标,则表示为空节点;
举例子:
比如输入为:'A', 'B', 'E', 'C', '#', 'F', 'G', '#', 'D','#','#', '#', '#', 'I', 'H'构造的二叉树如下:
package main
import "fmt"
type BinaryTreeNode struct {
val rune
LeftNode *BinaryTreeNode
RightNode *BinaryTreeNode
}
type BinaryTree struct {
Root *BinaryTreeNode
}
// 按照指定输入构造一颗二叉树,'#'字符表示null节点
func ConstructBinaryTree(arr [