java计算二叉树的高,java计算二叉树的高度以及叶节点个数

github地址: https://github.com/longyu109

java实现二叉树的相关操作

代码如下

package 二叉树有关;

import java.util.ArrayDeque;

import java.util.Queue;

public class CreateTree {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Node root = new Node();

root.data = 9;

Node temp01 = new Node();

temp01.data = 1;

root.left = temp01;

Node temp02 = new Node();

temp02.data = 3;

root.right = temp02;

Node temp03 = new Node();

temp03.data = 2;

root.left.left = temp03;

Node temp04 = new Node();

temp04.data = 4;

root.left.right = temp04;

Node temp05 = new Node();

temp05.data = 8;

root.right.left = temp05;

Node temp06 = new Node();

temp06.data = 6;

root.left.left.left = temp06;

Node temp07 = new Node();

temp07.data = 7;

root.left.left.right = temp07;

System.out.println("--------先序遍历----------");

SelectTree1(root);

System.out.println();

System.out.println("---------中序遍历---------");

SelectTree(root);

System.out.println();

System.out.println("---------后序遍历---------");

SelectTree2(root);

System.out.println();

System.out.println("----------叶节点个数-----------");

int i = leafNum(root);

System.out.println(i);

System.out.println("----------层次遍历二叉树-----------------");

levelOrder(root);

System.out.println();

int j = deep(root);

System.out.println("---------高度---------");

System.out.println(j);

}

// 中序遍历

public static void SelectTree(Node root) {

if (root == null)

return;

SelectTree(root.left);

System.out.print(root.data + " ");

SelectTree(root.right);

}

// 先序遍历

public static void SelectTree1(Node root) {

if (root == null)

return;

System.out.print(root.data + " ");

SelectTree1(root.left);

SelectTree1(root.right);

}

// 后序遍历

public static void SelectTree2(Node root) {

if (root == null)

return;

SelectTree2(root.left);

SelectTree2(root.right);

System.out.print(root.data + " ");

}

// 叶子数

public static int leafNum(Node node) {

if (node != null) {

if (node.left == null && node.right == null) {

return 1;

}

return leafNum(node.left) + leafNum(node.right);

}

return 0;

}

// 求二叉树的深度

public static int deep(Node node) {

int h1, h2;

if (node == null) {

return 0;

} else {

h1 = deep(node.left);

h2 = deep(node.right);

return (h1 < h2) ? h2 + 1 : h1 + 1;

}

}

// 层次遍历

public static void levelOrder(Node node) {

if (node == null)

return;

Queuequeue = new ArrayDeque();

queue.add(node);

while (!queue.isEmpty()) {

Node temp = queue.poll();

System.out.print(temp.data);

if (temp.left != null)

queue.add(temp.left);

if (temp.right != null)

queue.add(temp.right);

}

}

}

class Node {

boolean visited = false;

int data = 0;

Node left = null;

Node right = null;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值