搜索热词
下面是编程之家 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