二叉树算法的简单实现

xiaoxiao2021-02-28  105

今天简单了解了下二叉树算法。 二叉树:二叉树是用来存储数据的,就像树一样,它每个节点下会有左右两个节点构(没有也可以)成新的二叉树。 了解一下代码

package treepath; //创建二叉树,其实创建二叉树很简单。 public class TreePath { int data; //根节点 TreePath left;//左树 TreePath right;//右树 //为二叉树赋值 TreePath(int data){ this.data = data; left = null; right = null; } //以下代码是将数组中的数据以图片中的形式展现出来 //:传入一个数(int data),判断data和根节点的大小 //如果大于根节点,判断右树是否为空,如果为空将data作为 //右树的根节点,在形成一个新的二叉树。我的理解 二叉树就是一个根节点加两个空的左右树,之后进行递归,将数据以图片形式展现出来。 public void insert(TreePath root,int data){ if(data >root.data){ if(root.right == null){ root.right = new TreePath(data); }else{ insert(root.right,data); } }else{ if(root.left == null){ root.left = new TreePath(data); }else{ insert(root.left,data); } } } } //不同方式的遍历 //先序遍历 根左右-》输出左 根-》左树-》右树 //中根遍历 左根右-》 先输出 左树-》根-》右树 //后根遍历 左右根-》 先输出 左树-》右树-》根(方法没写) package treepath; public class TreePreoreder { //先序遍历 public void inPreoreder(TreePath root){ if(root != null){ System.out.print(root.data+"->"); inPreoreder(root.left); inPreoreder(root.right); } } //中续遍历 public void midPreoreder(TreePath root){ if(root != null){ midPreoreder(root.left); System.out.print(root.data+"->"); midPreoreder(root.right); } } } //测试 package treepath; public class TestTree { public static void main(String[] args) { //将数据存入到数组中,也就是图片中的数据 int[] array = {12,76,35,22,16,48,90,46,9,40}; TreePreoreder tp = new TreePreoreder(); //以12作为起始的节点 TreePath root = new TreePath(array[0]); //循环遍历,最后就是图片中的样子 for(int i =1;i<array.length;i++){ root.insert(root, array[i]); } //先序遍历 //tp.inPreoreder(root); //中序遍历 tp.midPreoreder(root); } }

当运行上面的程序后结果如下: 先根遍历: 12-9-76-35-22-16-48-46-40-90- 中根遍历: 9–12–16–22–35–40–46–48–76–90– 后根遍历: 9—16—22—40—46—48—35—90—76—12—

转载请注明原文地址: https://www.6miu.com/read-47112.html

最新回复(0)