数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

遍历叉树函数都用根节点做形参,构建叉树或者还原叉树都用数组元素做形参;

 

二叉树的性质:

   1.第i层上,最多有2^(i-1)个结点;

   2.深度为i的二叉树,这棵树最多有2^i -1个结点;

   3.度为2的节点数n1,终端结点(树叶)数n0,关系为n0=n1+1;

 

 

二叉树的表示方法:

在看下面,当在特定的位置不存在子树,就会显示空;

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

下面是重点:


于这些遍历方法代码表示:(递归方法)

 

①前序遍历:

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

 

③.后序遍历

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

4.层序遍历(采用了队列)queue.add就是添加到队列头部中,queue.poll就是将队列尾部元素取出删除;

   数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

 

 

 非递归的前中后序遍历用栈Stack存放二叉树元素

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点 数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

 

    //非递归后序    ,辅助栈中元素的顺序和后序遍历的顺序正好是相反的, 然后再将存在output辅助栈中的元素全部一个个泵出

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

按层序遍历的形式输出子节点(或子节点的值)的集合 :

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

 

上面已经讲了如何用对二叉树进行遍历,那么下面说一下如何构造二叉树

数组元素中有 -1的地方就是空树

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

 

判断一棵树是否是另一棵树的子树:

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点

 

 

判断一个节点是否是另一个节点的子节点:

数据结构之二叉树(递归和非递归),创建数,返回子节点的集合,判断是否是子树以及子节点