首页 > 其他分享 >10.10树的遍历

10.10树的遍历

时间:2023-10-10 21:57:06浏览次数:40  
标签:遍历 System trees right 10.10 data public out

public class Main {
public static void main(String[] args) {
trees<Integer> t=new trees<>(1);
trees<Integer> t1=new trees<>(2);
trees<Integer> t2=new trees<>(3);
trees<Integer> t3=new trees<>(4);
trees<Integer> t4=new trees<>(5);
t.left=t1;
t.right=t2;
t1.left=t3;
t1.right=t4;
System.out.println("前序");
t.preOrder(t);
System.out.println();
System.out.println("中序");
t.midOrder(t);
System.out.println();
System.out.println("后序");
t.lastOrder(t);
t.preOrderandmidOrder(t);

}
}       import java.util.LinkedList;
import java.util.Stack;
public class trees<T> {
private T data;
public trees<T> left;
public trees<T> right;

public trees(T data) {
this.data = data;
this.left = null;
this.right = null;
}
public trees(T data, trees<T> left, trees<T> right) {
this.data = data;
this.left = left;
this.right = right;
}
public void preOrder(trees<T> t) {//递归前序
if (t != null) {
System.out.print(t.data+" ");
preOrder(t.left);
preOrder(t.right);
}
}
public void preOrderandmidOrder(trees<T> t) {//非递归前序和后序
trees<T> current = t;
LinkedList<T> pre = new LinkedList<>();
LinkedList<T> mid = new LinkedList<>();
Stack<trees> S = new Stack<>();
while (current != null || !S.isEmpty()) {
if (current != null) {
S.push(current);
pre.add(current.data);
current = current.left;
} else {
trees<T> pop=S.pop();
mid.add(pop.data);
current = pop.right;

}
}
System.out.println();
System.out.println("前序");
for(T pre1:pre)
{
System.out.print(pre1+" ");
}
System.out.println();
System.out.println("中序");
mid.forEach(data-> System.out.printf(data+" "));
}

public void midOrder(trees<T> t) {//递归中序
if (t != null) {
midOrder(t.left);
System.out.print(t.data+" ");
midOrder(t.right);
}
}

public void lastOrder(trees<T> t) {//递归后序
if (t != null) {
lastOrder(t.left);
lastOrder(t.right);
System.out.print(t.data+" ");
}
}
}

标签:遍历,System,trees,right,10.10,data,public,out
From: https://www.cnblogs.com/zhaoqianwan/p/17755834.html

相关文章

  • 2023.10.10——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.mapreduce;明日计划:学习......
  • 2023.10.10鲜花
    我最近发现了一个神奇的现象,我听到一个熟悉的旋律或者闻到一个熟悉的气味,总能够想起特定的一段时光。就比如国庆放假的时候,我和我姐去山上玩,坐在湖边,放了一首歌——《花开忘忧》,前奏一响,我的感觉立马就像是回到了春天那会儿,挺奇妙的一种感觉。但是不是所有歌都会有这种感受。这种......
  • linux学习记录(thrift) 10.10
       做一个游戏匹配系统1、定义接口2、server3、cilentthrift:跨语言的服务部署框架,rpc框架,远程函数调用 任务:实现游戏节点,匹配节点(两个服务,match_system文件,game文件,thrift文件存所有thrift接口)游戏节点到匹配系统的有向边(实现match_client端、实现match_server端)......
  • jquery获取radio选中值及遍历
    在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来筛选,比如有以下的一些radio项:<inputtype="radio"name="testradio"value="jquery获取radio的值"/><inputtype="radio"name="testradio"value="jquery获取checkbox的值&quo......
  • 10.10算法
    爬楼梯假设你正在爬楼梯。需要n 阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶+1阶2.......
  • TreeAPI 递归和非递归遍历
    只包含递归和非递归遍历#include<stdio.h>#include<stdlib.h>#defineMaxSize20typedefstructnode{intdata;structnode*lchild,*rchild;}TreeNode,*Tree;typedefTreeNode*Elem;//方便修改栈中元素类型typedefstruct{Elemdata......
  • 在JavaScript中遍历数组的循环(对于每个)
    内容来自DOChttps://q.houxu6.top/?s=在JavaScript中遍历数组的循环(对于每个)我可以使用JavaScript遍历数组中的所有条目吗?TL;DR你最好选择通常的方法是:使用for-of循环(ES2015+只支持;规范|MDN)-简单且适用于async。for(constelementoftheArray){//.......
  • 143-3 二叉树后序非递归遍历
    二叉树的后序非递归遍历使用辅助栈 r指针的作用是判断该结点是否遍历过#include<stdio.h>#include<stdlib.h>#defineMaxSize20typedefstructnode{intdata;structnode*lchild,*rchild;}TreeNode,*Tree;typedefTreeNode*Elem;typedefstruct{......
  • vue中的循环遍历对象、数组和字符串
    vue循环遍历对象、数组和字符串1.循环遍历对象1.1vue在html里面循环遍历对象v-for="(val,key,i)indimItemMap":key="key" val-每一项key-key值i-第几个<el-table-columnprop="score"label="评分":show-overflow-tooltip="true"ali......
  • jquery之each遍历
    jQuery的each和原生的JavaScript方法forEach原生的JavaScript方法forEach是EcmaScript5提供的不兼容IE8jQuery的each由jQuery这个第三方库提供jQuery2以下的版本是兼容IE8的它的each方法主要用来遍历jQuery实例对象(伪数组)同时它也可以作为......