对于树这类题目,其实并不研究复杂的树,只研究最简单的二叉树,所谓二叉树就是指每个结点最多有2个子节点,可以只有一个子节点或者没有子节点(只要让不存在的结点为null即可),每个结点TreeNode除了有子节点之外还有一个数值,通常数值是int类型的数,即树有树结点构成,每个结点是一个TreeNode对象,结点对象中包含对2个子节点的引用以及一个int类型的值。二叉树问题并不难,通链表一样主要也是对指针的使用,只是二叉树的使用范围更广,场景、变化更多;因此要多理解,多练习,学会举一反三。
注意:二叉树不同于堆(堆是特殊的二叉树—完全二叉树),只有完全二叉树才与数组相对应,才可以使用i、2*i、2*i+1来建立父节点与子节点之间的位置关系。
视频讲解:
二叉树是由结点通过引用构成的,二叉树结点的结构是int value用来表示这个结点的值,以及Node left和Node right用来表示这个结点的2个子节点的引用对象。在Node类中通常还有一个构造函数,用来给新创建的结点赋值,注意只是给value属性赋值,left和right不赋值,默认是null。在新创建数的结点时需要Node node=new Node(123);并且通过设置left、right来设置这个结点的左右子节点;通过将某个结点的left或者right赋值为node来将结点node连接到已有的父节点上。注意,在二叉树中,任何一个结点只有一个父节点,即只会被引用一次;任何一个几点最多有2个子节点,即最多可以引用2个子节点。
二叉树类型题目是面试常考题型
1.二叉树能够结合