久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

按之字形順序打印二叉樹

 小世界的野孩子 2022-09-07 發(fā)布于北京

請實現(xiàn)一個函數(shù)按照之字形打印二叉樹,,即第一行按照從左到右的順序打印,,第二層按照從右至左的順序打印,,第三行按照從左到右的順序打印,其他行以此類推


解題思路

這道題可以借助兩個棧來實現(xiàn),,用文字不好描述,,也許直接看代碼會好一些

import java.util.ArrayList;
import java.util.Stack;
public class Solution {
    public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
    	// 用來存放結(jié)點
        ArrayList<ArrayList<Integer>> list = new ArrayList<>();
        if(pRoot == null) {
            return list; 
        }
        // 判斷奇偶層
        int layer = 1;
        // 存放奇數(shù)層結(jié)點
        Stack<TreeNode> s1 = new Stack<>();
        // 存放偶數(shù)層結(jié)點
        Stack<TreeNode> s2 = new Stack<>();
        // 先把根結(jié)點放入奇數(shù)層
        s1.push(pRoot);
        // 如果兩個棧都為空,那么就證明所有結(jié)點都已遍歷完畢
        while(!s1.empty() || !s2.empty()) {
        	// 當(dāng)前層是奇數(shù)層
            if(layer % 2 != 0) {
            	// 存放奇數(shù)層的結(jié)點
                ArrayList<Integer> temp = new ArrayList<>();
                // 把奇數(shù)層的結(jié)點逐個彈出,,用 temp 保存起來
                // 同時把每個彈出結(jié)點的左右子結(jié)點壓入棧
                // 要注意棧的特點是后進(jìn)先出,,因此出棧順序和入棧順序是相反的
                while(!s1.empty()) {
                    TreeNode node = s1.pop();
                    if(node != null) {
                        temp.add(node.val);
                        s2.push(node.left);
                        s2.push(node.right);
                    }
                }
                if(!temp.isEmpty()) {
                    list.add(temp);
                    layer++;
                }
            } else {
            	// 原理同上
                ArrayList<Integer> temp = new ArrayList<>();
                while(!s2.empty()) {
                    TreeNode node = s2.pop();
                    if(node != null) {
                        temp.add(node.val);
                        s1.push(node.right);
                        s1.push(node.left);
                    }
                }
                if(!temp.isEmpty()) {
                    list.add(temp);
                    layer++;
                }
            }
        }
        return list;
    }
}

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多