二叉樹應用

問題1:

打印二叉樹.png

思路:

假設折三次,折完之后的折痕就是下下上下下上上,按照每次折的開始建立二叉樹(建立過程中才知道是二叉樹的)

1 下
/
2 下 上
/ \ /
3 下 上 下 上

這樣的結構,再和打印的順序對應,發(fā)現(xiàn)是二叉樹的中序遍歷,代碼如下,遞歸實現(xiàn)

代碼:


    public static void printAllFolds(int N) {
        printProcess(1, N, true);
    }

    public static void printProcess(int i, int N, boolean down) {
        if (i > N) {
            return;
        }
        printProcess(i + 1, N, true);
        System.out.println(down ? "down " : "up ");
        printProcess(i + 1, N, false);
    }

    public static void main(String[] args) {
        int N = 4;
        printAllFolds(N);

    }

在這里說一下遞歸,注意遞歸就可以看作是系統(tǒng)幫你實現(xiàn)的一個棧,自動進出棧,以本題為例,如下圖


棧實現(xiàn)遞歸過程.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 樹的概述 樹是一種非常常用的數(shù)據(jù)結構,樹與前面介紹的線性表,棧,隊列等線性結構不同,樹是一種非線性結構 1.樹的定...
    Jack921閱讀 4,758評論 1 31
  • 基于樹實現(xiàn)的數(shù)據(jù)結構,具有兩個核心特征: 邏輯結構:數(shù)據(jù)元素之間具有層次關系; 數(shù)據(jù)運算:操作方法具有Log級的平...
    yhthu閱讀 4,465評論 1 5
  • 一直以來,我都很少使用也避免使用到樹和圖,總覺得它們神秘而又復雜,但是樹在一些運算和查找中也不可避免的要使用到,那...
    24K男閱讀 6,857評論 5 14
  • 數(shù)據(jù)結構和算法--二叉樹的實現(xiàn) 幾種二叉樹 1、二叉樹 和普通的樹相比,二叉樹有如下特點: 每個結點最多只有兩棵子...
    sunhaiyu閱讀 6,696評論 0 14
  • 概述# 二叉樹是一種特殊的樹型結構,它由結點的有限集合構成。 二叉樹是由唯一的起始結點引出的結點集合。這個起始節(jié)點...
    長胖的魚閱讀 1,227評論 0 8

友情鏈接更多精彩內容