java 递归二叉树遍历二叉树_Java通过递归进行二叉树遍历

搜索热词

下面是编程之家 jb51.cc 通过网络收集整理的代码片段。

编程之家小编现在分享给大家,也给大家做个参考。

// 测试二叉树遍历,递归算法

public class TestBinaryTree {

public static void main(String[] args) {

Node g = new Node("G",null,null);

Node e = new Node("E",null);

Node f = new Node("F",null);

Node d = new Node("D",g);

Node b = new Node("B",d,e);

Node c = new Node("C",f);

Node a = new Node("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 void priorderTraversal(Node node) {

if (node != null) {

visitNode(node);

priorderTraversal(node.getLeftChild());

priorderTraversal(node.getRightChild());

}

}

// 中序遍历

static void inorderTraversal(Node node) {

if (node != null) {

inorderTraversal(node.getLeftChild());

visitNode(node);

inorderTraversal(node.getRightChild());

}

}

// 后序遍历

static void postorderTraversal(Node node) {

if (node != null) {

postorderTraversal(node.getLeftChild());

postorderTraversal(node.getRightChild());

visitNode(node);

}

}

// 二叉树深度

static int getDepth(Node 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 void visitNode(Node node) {

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

}

}

// 节点

class Node {

private T key;

private Node leftChild;

private Node rightChild;

public Node() {

}

public Node(T key,Node leftChild,Node 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 getLeftChild() {

return leftChild;

}

public void setLeftChild(Node leftChild) {

this.leftChild = leftChild;

}

public Node getRightChild() {

return rightChild;

}

public void setRightChild(Node rightChild) {

this.rightChild = rightChild;

}

}

输出结果:

生成的二叉树:

A

|

|---------|

B C

| |

|---------| -----|

D E F

|

----|

G

二叉树深度:4

前序遍历:A B D G E C F

中序遍历:D G B E A C F

后序遍历:G D E B F C A

以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

相关文章

总结

以上是编程之家为你收集整理的Java通过递归进行二叉树遍历全部内容,希望文章能够帮你解决Java通过递归进行二叉树遍历所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250


版权声明:本文为weixin_42549723原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。