此代码乃本人亲手制作,特点是绝对清纯,用到了大学时的递归遍历二叉树的知识,热爱计算机的同学可以看一看,给点意见。
Node.java
class Node
{
private String name;
private Node leftChild;
private Node rightChild;
public Node(String name)
{
this.name = name;
}
public void output()
{
System.out.print(name + "-->");
}
public Node getLeft()
{
return leftChild;
}
public void setLeft(Node leftChild)
{
this.leftChild = leftChild;
}
public Node getRight()
{
return rightChild;
}
public void setRight(Node rightChild)
{
this.rightChild = rightChild;
}
public String getName()
{
return name;
}
}
BinaryTree.java
class BinaryTree
{
private Node root;
private static Node pp;
public Node getRoot()
{
return root;
}
private boolean iterateCompare(Node p, String name)
{
// 插入节点前先遍历一下二叉树查看有没有该父节点
if (p.getLeft() != null && iterateCompare(p.getLeft(), name))
{
return true;
}
if (p.getName().equals(name))
{
BinaryTree.pp = p;
return true;
}
if (p.getRight() != null && iterateCompare(p.getRight(), name))
{
return true;
}
return false;
}
// 中序遍历输出
public void inOrderIterateOutput(Node p)
{
if (p.getLeft() != null)
{
inOrderIterateOutput(p.getLeft());
}
p.output();
if (p.getRight() != null)
{
inOrderIterateOutput(p.getRight());
}
}
// 先序遍历输出
public void preOrderIterateOutput(Node p)
{
p.output();
if (p.getLeft() != null)
{
preOrderIterateOutput(p.getLeft());
}
if (p.getRight() != null)
{
preOrderIterateOutput(p.getRight());
}
}
// 后序遍历输出
public void postOrderIterateOutput(Node p)
{
if (p.getLeft() != null)
{
postOrderIterateOutput(p.getLeft());
}
if (p.getRight() != null)
{
postOrderIterateOutput(p.getRight());
}
p.output();
}
public void initialize()
{
root = new Node("root");
}
public boolean addNode(String parent, String flag, String name)
{
if (!(flag.equals("L") || flag.equals("R")))
{
return false;
}
if (iterateCompare(root, parent))
{// 找到有该节点
if (flag.equals("L") && BinaryTree.pp.getLeft() == null)
{
BinaryTree.pp.setLeft(new Node(name));
return true;
}
else if (flag.equals("R") && BinaryTree.pp.getRight() == null)
{
BinaryTree.pp.setRight(new Node(name));
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
}
Test.java
class Test
{
public static void main(String[] args)
{
BinaryTree bt = new BinaryTree();
bt.initialize();
if (bt.addNode("root", "L", "A"))
{
System.out.println("添加root--L-->A成功");
}
if (bt.addNode("root", "R", "B"))
{
System.out.println("添加root--R-->B成功");
}
if (bt.addNode("A", "L", "C"))
{
System.out.println("添加A--L-->C成功");
}
if (bt.addNode("B", "L", "D"))
{
System.out.println("添加B--L-->D成功");
}
if (bt.addNode("B", "R", "E"))
{
System.out.println("添加B--R-->E成功");
}
System.out.println("中序遍历");
bt.inOrderIterateOutput(bt.getRoot());
System.out.println("\n先序遍历");
bt.preOrderIterateOutput(bt.getRoot());
System.out.println("\n后序遍历");
bt.postOrderIterateOutput(bt.getRoot());
}
}
输出结果:
添加root--L-->A成功
添加root--R-->B成功
添加A--L-->C成功
添加B--L-->D成功
添加B--R-->E成功
中序遍历
C-->A-->root-->D-->B-->E-->
先序遍历
root-->A-->C-->B-->D-->E-->
后序遍历
C-->A-->D-->E-->B-->root-->
分享到:
相关推荐
典型化工介质腐蚀数据和选材表(郭峰杰).xls
郭峰卿论文-论文.zip
04郭峰布置合理的作业.docx
深入浅出设计模式(郭峰)代码总结 包括了各种uml图 最后一章的博客项目也包含在其中 (包括sql文件)
高分子电光材料在THz辐射源领域的研究进展_郭峰.caj
中国数字普惠金融指标体系与指数编制 - 北大国家发展研究院_郭峰.pdf
冰致直立结构自激振动理论与实验研究,郭峰玮,岳前进,对冰致直立结构振动问题的两种理论模型:强迫振动和自激振动进行了讨论。通过数据分析,证明渤海辽东湾平台上观测到的冰致直立结
本书由浅入深,循序渐进地介绍了Spring的体系结构和相关知识点,目的是帮助初学者快速掌握Spring,并能使用Spring进行应用程序的开发。本书最大的特色在于每章都是由浅入深,从一个简单的示例入手,让读者快速了解本...
库存管理系统源代码 数据库以及说明文档,采用C#开发,SQLserver数据库。
基于JavaEE的网上图书销售系统的设计与实现 源码开放,经测试,系统完美运行。并提供更多系统的下载。
第二期和第三期指数(2016-2020)课题组成员包括:郭峰、王靖一、王雪、程志云、李勇国、王芳。课题组也获得了北京大学和蚂蚁集团多位同事的技术支持。 3、指数属性:这套指数包括数字普惠金融指数,以及数字金融...
深入浅出设计模式深入浅出设计模式深入浅出设计模式深入浅出设计模式深入浅出设计模式
于监管和公司数据安全审核等方面的原因,2019和2020年的信用和货币基金分指数 ,没有对外公布。 4、指数范围:中国内地31个省(直辖市、自治区,简称“省”)、 337个地级以上城市(地区、自治州、盟等,简称“城市...
于监管和公司数据安全审核等方面的原因,2019和2020年的信用和货币基金分指数 ,没有对外公布。 4、指数范围:中国内地31个省(直辖市、自治区,简称“省”)、 337个地级以上城市(地区、自治州、盟等,简称“城市...
第二期和第三期指数(2016-2020)课题组成员包括:郭峰、王靖一、王雪、程志云、李勇国、王芳。课题组也获得了北京大学和蚂蚁集团多位同事的技术支持。 3、指数属性:这套指数包括数字普惠金融指数,以及数字金融...
库存管理系统源码 本系统包括以下几大模块: l 用户管理:包括用户的新增、删除、修改密码。以及用户的权限管理(普通用户与管理员用户) l 货物管理:包括货物基本档案...,
中心和蚂蚁金服集团组成的联合课题组负责编制,课题组顾问由北京大学数字金融研究中心 主任黄益平,蚂蚁金服集团副总裁梁世栋担任。第一期指数(2011-2015)课题组 成员包括:郭峰、孔涛、王靖一、张勋、程志云、阮...
在这个状态下,电机的机械特性是固定的,不受外部影响的人为机械特性是电机在不同电压、电流和电阻下的机械特性,它受到电机参数和外部条件的影响。 五、他励直流电动机的机械特性 他励直流电动机是电机原理中的一...
中心和蚂蚁科技集团研究院组成的联合课题组负责编制,课题组顾问包括北京大学数字金融 研究中心主任黄益平,蚂蚁集团研究院院长李振华。第一期指数(2011-2015)课 题组成员主要包括:郭峰、孔涛、王靖一、张勋、程...
其中指标包括数字普惠金融指数、覆盖广度、使用深度和数字化程度三个维度 参考文献:郭峰,王靖一,王芳,孔涛,张勋,程志云.测度中国数字普惠金融发展:指数编制与空间特征[J].经济学(季刊),2020,19(04):1401-1418. ...