寫代碼過程中,將寫代碼過程重要的代碼片段收藏起來,下面的代碼是關于Java通過遞歸進行二叉樹遍歷的代碼,應該是對各朋友有一些好處。
創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為清鎮(zhèn)企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站設計,清鎮(zhèn)網(wǎng)站改版等技術服務。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。package com.wzs;
public class TestBinaryTree {
public static void main(String[] args) {
Node g = new Node("G", null, null);
Node e = new Node("E", null, null);
Node f = new Node("F", null, null);
Node d = new Node("D", null, g);
Node b = new Node("B", d, e);
Node c = new Node("C", null, 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;
}
}
輸出結(jié)果:
生成的二叉樹:
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
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。