国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java實現(xiàn)的二叉樹常用操作【前序建樹,前中后遞歸非遞歸遍歷及層序遍歷】

Java實現(xiàn)的二叉樹常用操作【前序建樹,前中后遞歸非遞歸遍歷及層序遍歷】

2021-03-24 15:24idealemail Java教程

這篇文章主要介紹了Java實現(xiàn)的二叉樹常用操作,包括二叉樹的前序建樹,前中后遞歸非遞歸遍歷及層序遍歷等相關(guān)操作技巧,需要的朋友可以參考下

本文實例講述了Java實現(xiàn)的二叉樹常用操作。分享給大家供大家參考,具體如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import java.util.ArrayDeque;
import java.util.Queue;
import java.util.Stack;
//二叉樹的建樹,前中后 遞歸非遞歸遍歷 層序遍歷
//Node節(jié)點
class Node {
    int element;
    Node left;
    Node right;
    public Node() {
    }
    public Node(int element) {
        this.element = element;
    }
}
// BinaryTree
public class Tree {
    // creat tree from array
    public static Node creatTree(int[] data, int i) {
        if (i >= data.length || data[i] == -1)
            return null;
        Node temp = new Node(data[i]);
        temp.left = creatTree(data, i * 2 + 1);
        temp.right = creatTree(data, i * 2 + 2);
        return temp;
    }
    // pre前序遍歷遞歸
    public static void pre(Node temp) {
        if (temp == null)
            return;
        System.out.print(temp.element + " ");
        pre(temp.left);
        pre(temp.right);
    }
    // mid中序遍歷遞歸
    public static void mid(Node temp) {
        if (temp == null)
            return;
        mid(temp.left);
        System.out.print(temp.element + " ");
        mid(temp.right);
    }
    // last后序遍歷遞歸
    public static void last(Node temp) {
        if (temp == null)
            return;
        last(temp.left);
        last(temp.right);
        System.out.print(temp.element + " ");
    }
    // pre1前序遍歷非遞歸
    public static void pre1(Node temp) {
        Stack<Node> stack = new Stack<>();
        while (temp != null || !stack.isEmpty()) {
            while (temp != null) {
                stack.push(temp);
                System.out.print(temp.element + " ");
                temp = temp.left;
            }
            if (!stack.isEmpty()) {
                temp = stack.pop().right;
            }
        }
    }
    // mid1中序遍歷非遞歸
    public static void mid1(Node temp) {
        Stack<Node> stack = new Stack<>();
        while (temp != null || !stack.isEmpty()) {
            while (temp != null) {
                stack.push(temp);
                temp = temp.left;
            }
            if (!stack.isEmpty()) {
                temp = stack.pop();
                System.out.print(temp.element + " ");
                temp = temp.right;
            }
        }
    }
    // last1后序遍歷非遞歸
    public static void last1(Node temp) {
        Stack<Node> stack = new Stack<>();
        Stack<Node> stack2 = new Stack<>();
        while (temp != null || !stack.isEmpty()) {
            while (temp != null) {
                stack.push(temp);
                stack2.push(temp);
                temp = temp.right;
            }
            if (!stack.isEmpty()) {
                temp = stack.pop().left;
            }
        }
        while (!stack2.isEmpty())
            System.out.print(stack2.pop().element + " ");
    }
    // ceng層序遍歷
    public static void ceng(Node temp) {
        if (temp == null)
            return;
        Queue<Node> queue = new ArrayDeque<>();
        queue.offer(temp);
        while (!queue.isEmpty()) {
            temp = queue.poll();
            System.out.print(temp.element + " ");
            if (temp.left != null)
                queue.offer(temp.left);
            if (temp.right != null)
                queue.offer(temp.right);
        }
    }
    // Demo
    public static void main(String[] args) {
        int[] array = { 1, 2, 3, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13 };
        Node tree = creatTree(array, 0);
        System.out.println("服務(wù)器之家測試結(jié)果:");
        pre(tree);
        System.out.println();
        pre1(tree);
        System.out.println();
        mid(tree);
        System.out.println();
        mid1(tree);
        System.out.println();
        last(tree);
        System.out.println();
        last1(tree);
        System.out.println();
        ceng(tree);
    }
}

運行結(jié)果:

Java實現(xiàn)的二叉樹常用操作【前序建樹,前中后遞歸非遞歸遍歷及層序遍歷】

希望本文所述對大家java程序設(shè)計有所幫助。

原文鏈接:http://blog.csdn.net/idealemail/article/details/51382114

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕在线资源 | 亚洲激情在线播放 | 国产午夜视频 | 不卡一二三区 | 偷拍一区二区 | 亚洲三级在线免费观看 | 久久亚洲欧美日韩精品专区 | 婷婷久久综合 | 高清视频一区 | 福利片在线观看 | 亚洲男人在线天堂 | 日韩av中文 | 欧美天天| 免费性大片 | 秋霞精品 | 亚洲成av人片在线观看无码 | 黄色毛片在线观看 | 91精品国产乱码久久久久久 | 亚洲国产精品99久久久久久久久 | 国产精品久久久久久久久久久天堂 | 午夜国产精品视频 | 免费看一级黄色片 | 欧美一级全黄 | 日韩第一区 | 韩国精品一区二区 | 成人精品视频 | 国产欧美精品区一区二区三区 | av在线成人 | 天天天操| 成人激情视频 | 中文字幕91在线 | 2018自拍偷拍 | 免费一级特黄做受大片 | 91亚洲国产成人久久精品网站 | 欧美国产精品一区二区三区 | 国产精品国产三级国产aⅴ 亚洲精品免费在线观看 | 日韩欧美在线播放 | 欧美a在线| 国产精品久久久久久久久久 | 精品国产一区二区三区久久久蜜 | 亚洲天堂免费在线 |