博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java递归方法遍历二叉树的代码
阅读量:5256 次
发布时间:2019-06-14

本文共 2743 字,大约阅读时间需要 9 分钟。

将内容过程中经常用的内容做个记录,如下内容内容是关于Java递归方法遍历二叉树的内容。

package com.wzs;

public class TestBinaryTree {

public static void main(String[] args) {
Node<String> g = new Node<String>("G", null, null);
Node<String> e = new Node<String>("E", null, null);
Node<String> f = new Node<String>("F", null, null);
Node<String> d = new Node<String>("D", null, g);
Node<String> b = new Node<String>("B", d, e);
Node<String> c = new Node<String>("C", null, f);
Node<String> a = new Node<String>("A", b, c);

System.out.println("生成的二叉树:");

System.out.println(" A");
System.out.println(" | ");
System.out.println(" |---------|");
System.out.println(" B C");
System.out.println(" | |");
System.out.println(" |---------| -----|");
System.out.println(" D E F");
System.out.println(" |");
System.out.println(" ----|");
System.out.println(" G");

System.out.println("二叉树深度:" + BinaryTree.getDepth(a));

System.out.print("前序遍历:");

BinaryTree.priorderTraversal(a);
System.out.println();

System.out.print("中序遍历:");

BinaryTree.inorderTraversal(a);
System.out.println();

System.out.print("后序遍历:");

BinaryTree.postorderTraversal(a);
System.out.println();
}
}

class BinaryTree {

static <T> void priorderTraversal(Node<T> node) {
if (node != null) {
visitNode(node);
priorderTraversal(node.getLeftChild());
priorderTraversal(node.getRightChild());
}
}

static <T> void inorderTraversal(Node<T> node) {

if (node != null) {
inorderTraversal(node.getLeftChild());
visitNode(node);
inorderTraversal(node.getRightChild());
}
}

static <T> void postorderTraversal(Node<T> node) {

if (node != null) {
postorderTraversal(node.getLeftChild());
postorderTraversal(node.getRightChild());
visitNode(node);
}
}

static <T> int getDepth(Node<T> node) {

if (node == null) {
return 0;
}
int leftDepth = 0;
int rightDepth = 0;
leftDepth = getDepth(node.getLeftChild());
rightDepth = getDepth(node.getRightChild());
return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
}

static <T> void visitNode(Node<T> node) {

System.out.print(node.getKey() + " ");
}
}

class Node<T> {

private T key;
private Node<T> leftChild;
private Node<T> rightChild;

public Node() {

}

public Node(T key, Node<T> leftChild, Node<T> rightChild) {

super();
this.key = key;
this.leftChild = leftChild;
this.rightChild = rightChild;
}

public T getKey() {

return key;
}

public void setKey(T key) {

this.key = key;
}

public Node<T> getLeftChild() {

return leftChild;
}

public void setLeftChild(Node<T> leftChild) {

this.leftChild = leftChild;
}

public Node<T> getRightChild() {

return rightChild;
}

public void setRightChild(Node<T> rightChild) {

this.rightChild = rightChild;
}

}

输出结果生成的二叉树:A||---------|BC|||---------|-----|DEF|----|G二叉树深度:4前序遍历:ABDGECF中序遍历:DGBEACF后序遍历:GDEBFCA

转载于:https://www.cnblogs.com/51jiaoshou/p/10354793.html

你可能感兴趣的文章
委托又给我惹麻烦了————记委托链的取消注册、获取返回值
查看>>
ps怎么把白色背景变透明
查看>>
字符串转 Boolean 的正确方式
查看>>
给你的网站404页面加上“宝贝寻亲”公益页面
查看>>
整理推荐的CSS属性书写顺序
查看>>
ServerSocket和Socket通信
查看>>
css & input type & search icon
查看>>
jQuery插件开发详细教程
查看>>
ProxySQL Scheduler
查看>>
源代码的下载和编译读后感
查看>>
Kafka学习笔记
查看>>
Octotree Chrome安装与使用方法
查看>>
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现
查看>>
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>