二叉樹(shù)

20180119144120781.png

public class Main {

private static class TreeNode {

    private int value;
    private TreeNode left;
    private TreeNode right;

    public TreeNode(int value) {
        this.value = value;
    }

}

public static void main(String[] args) {

    TreeNode a = new TreeNode(1);
    TreeNode b = new TreeNode(2);
    TreeNode c = new TreeNode(3);
    TreeNode d = new TreeNode(4);
    TreeNode e = new TreeNode(5);
    TreeNode f = new TreeNode(6);
    TreeNode g = new TreeNode(7);

    a.left = b;
    a.right = c;
    b.right = d;
    c.left = e;
    c.right = f;
    f.left = g;

    postSort(a);
    recutionPostSort(a);
}

private static void visit(TreeNode node) {
    System.out.println(node.value);
}

//先序遞歸(中左右)
private static void preSort(TreeNode node) {
    if (node == null) {
        return;
    }
    visit(node);
    preSort(node.left);
    preSort(node.right);
}


//中序非遞歸(左中右)
private static void inSort(TreeNode node) {
    if (node == null) {
        return;
    }
    inSort(node.left);
    visit(node);
    inSort(node.right);
}

//后序(左右中)
private static void postSort(TreeNode node) {
    if (node == null) {
        return;
    }
    postSort(node.left);
    postSort(node.right);
    visit(node);
}

//先序非遞歸
private static void recutionPreSort(TreeNode node) {

    Stack stack = new Stack();

    while (node != null || !stack.isEmpty()) {

        while (node != null) {
            visit(node);
            stack.push(node);
            node = node.left;
        }

        if (!stack.isEmpty()) {
            node = (TreeNode) stack.pop();
            node = node.right;
        }

    }

}

//先序非遞歸
private static void recutionInPreSort(TreeNode node) {

    Stack stack = new Stack();

    while (node != null || !stack.isEmpty()) {

        while (node != null) {
            stack.push(node);
            node = node.left;
        }

        if (!stack.isEmpty()) {
            node = (TreeNode) stack.pop();
            visit(node);
            node = node.right;
        }

    }
}

//后序非遞歸
private static void recutionPostSort(TreeNode root) {

    Stack<TreeNode> stack = new Stack<>();

    while (true) {

        if (root != null) {
            stack.push(root);
            root = root.left;
        } else {

            if (stack.isEmpty()) {
                return;
            }

            if (null == stack.peek().right) {
                root = stack.pop();
                visit(root);
                while (root == stack.peek().right) {
                    root = stack.pop();
                    visit(root);
                    if (stack.isEmpty()) {
                        break;
                    }
                }
            }

            if (!stack.isEmpty()) {
                root = stack.peek().right;
            } else {
                root = null;
            }
        }

    }
}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市蹂楣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖嘶窄,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異缆蝉,居然都是意外死亡疲迂,警方通過(guò)查閱死者的電腦和手機(jī)若未,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)朱嘴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人粗合,你說(shuō)我怎么就攤上這事萍嬉。” “怎么了隙疚?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵壤追,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我供屉,道長(zhǎng)行冰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任伶丐,我火速辦了婚禮悼做,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哗魂。我一直安慰自己肛走,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布录别。 她就那樣靜靜地躺著朽色,像睡著了一般。 火紅的嫁衣襯著肌膚如雪组题。 梳的紋絲不亂的頭發(fā)上葫男,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音崔列,去河邊找鬼梢褐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的利职。 我是一名探鬼主播趣效,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼猪贪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起讯私,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤热押,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后斤寇,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體桶癣,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年娘锁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牙寞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡莫秆,死狀恐怖间雀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情镊屎,我是刑警寧澤惹挟,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站缝驳,受9級(jí)特大地震影響连锯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜用狱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一运怖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧夏伊,春花似錦摇展、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至砸狞,卻和暖如春捻勉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刀森。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工踱启, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓埠偿,卻偏偏與公主長(zhǎng)得像透罢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冠蒋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348