(1)二叉树是什么:
除叶子节点外,所有节点都拥有左右两条分支。
每个节点都包含着当前节点的值。
最上层的头叫做根节点。
比根节点小的放左边,比根节点大的放右边。
针对大批量的,动态的数据存储,查询增删的效率都非常高,理想状态下时间复杂度O(logN)。
(2)如果有一串数组元素:6,3,2,5,4,1,8,7,9 , 组成的二叉树应该是怎样的?
(3)过程解析:
1:首先二叉树包含三个信息,左节点,右节点,还有当前节点value。
2:在创建时肯定是拿一个元素做根节点,然后把后续进来的元素与根节点比较。
比根节点小且当前节点的左节点为空,放左边;不为空,继续比较
比根节点大且当前节点的右节点为空,放右边;不为空,继续比较
3:直到把数组元素放完,整棵树就生成了。
(4)编码思路:
一看就是一个递归调用的过程,操作步骤也很简单,除了第一步是拿第一个元素设置一下根几点,后续元素都是跟根节点比较大小,然后判断左右是否有坑位,坑位空就直接设置,不为空不能直接覆盖别人的坑位,而是礼貌的拿出子节点继续比较,直到找到一个新坑位。
(5)代码实现:
树的实体类:
public class Tree {
private Tree leftNode;
private int value = 0;
private Tree rightNode;
public Tree getLeftNode() {
return leftNode;
}
public void setLeftNode(Tree leftNode) {
this.leftNode = leftNode;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Tree getRightNode() {
return rightNode;
}
public void setRightNode