二叉树—存储、遍历

这篇博客介绍了二叉树的基本概念,包括每个节点最多有两个孩子节点的特性。讨论了二叉树的顺序存储和链式存储方式,并详细阐述了先序、中序和后序遍历的实现方法。此外,还提供了构建二叉树的代码示例以及三种遍历方式的代码实现。
摘要由CSDN通过智能技术生成

二叉树

树的每个节点最多有两个孩子节点

存储

顺序存储

一个节点编号i,它的双亲i/2,左孩子2i,右孩子2i+1

链式存储

遍历

先序遍历:根左右

中序遍历:左根右

后续遍历:左右根

构建遍历代码:

//
//二叉树节点是个静态类
private static class TreeNode{
	int data;//数据域
	TreeNode leftChild;//左孩子
	TreeNode rightChild;//右孩子 
}

//构建二叉树
//传入一个集合序列,LinkedList适合插入数据,频繁删除数据,每次存入数据后都要删除存入的数据 
public static TreeNode creatBinaryTree(LinkedList<Integer> inputList)
{
	TreeNode node=null;
	if(inputList==null||inputList.isEmpy()) //因为如果inputList为空就不能调用该对象的方法,所以zhi一般是先判断不为null然后在判断该集合里面是不是有元素
	{
		return null;//存储结束,返回NULL 
	}
    int data=inputList.removeFirst();//移除第一个元素,并拿到他
	if(data!=null)//有数据
	{
		node.data=data;//存入数据
		node.leftChild=creatBinaryTree(inputList);//去掉首元素的集合
		node.rightChild=creatBinaryTree(inputList);//去掉首元素的集合
	} 
}

//先序遍历
public void preOrder(TreeNode node)
{
	if(node=null){ //节点空,遍历结束 
		return ;  //无返回值void 
	}
	System.out.println(node.data);//输出数据,遍历根 
	preOrder(node.leftChild);//遍历左孩子 
	preOrder(node.rightChild);//遍历右孩子 
 } 
 //注意:data不用再判断,因为空也可以输出,前面构造二叉树时,data=null时,也存入了 
 
 
 //中序遍历
public void inOrder(TreeNode node)
{
	if(node=null){ //节点空,遍历结束 
		return ;  //无返回值void 
	}
	inOrder(node.leftChild);//遍历左孩子
	System.out.println(node.data);//输出数据,遍历根 
	inOrder(node.rightChild);//遍历右孩子 
 } 
 
 //后序遍历
public void postOrder(TreeNode node)
{
	if(node=null){ //节点空,遍历结束 
		return ;  //无返回值void 
	}
	postOrder(node.leftChild);//遍历左孩子
	postOrder(node.rightChild);//遍历右孩子
	System.out.println(node.data);//输出数据,遍历根  
 } 
 
 //主函数
 public static void main(String[] args) 
 {
 	LinkedList<Integer> inputList=new LinkedList<Intsger>(
	 Arrays.asList(new Integer[]{3,2,9,null,null,10,null,null,8,null,null,4})
	 );
	 TreeNode treeNode =creatBinaryTree(inputList);
	  System.out.println(先序遍历);
	  preOrder(inputList);
	  System.out.println(中序遍历);
	  inOrder(inputList);
	  System.out.println(后序遍历);
	  postOrder(inputList);
  } 

要点

定义:三成员

创建:传集合、两判断   

           判断一:集合为null,返回null.      

           判断二:元素为null,返回node

遍历:判节点

           节点为null,结束一个节点遍历

 

 

单词

Child  孩子

preOrder 先序遍历

inOrder 中序遍历

postOrder 后序遍历

createBinaryTree 构建二叉树

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值