java編程題之從上往下打印出二叉樹
更新時間:2021年08月26日 08:58:07 作者:hasp_Jason
這篇文章主要為大家詳細介紹了java編程題之從上往下打印出二叉樹,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java從上往下打印出二叉樹的具體代碼,供大家參考,具體內(nèi)容如下
github:劍指offer編程全部試題
import java.util.ArrayList; import java.util.Stack; /** * * 劍指offer編程題(JAVA實現(xiàn))——第22題:從上往下打印出二叉樹 * * 題目描述 * 從上往下打印出二叉樹的每個節(jié)點,同層節(jié)點從左至右打印。 * */ public class Test22 { ArrayList<Integer> arrayList = new ArrayList<>(); // 每層依次入棧 Stack<TreeNode> stack1 = new Stack<>(); // 從stack1出棧的元素依次加入stack2,統(tǒng)一通過stack2找到他們的字節(jié)點并壓入stack1 Stack<TreeNode> stack2 = new Stack<>(); public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { if (root == null) { return arrayList;// 空則返回 } stack1.push(root); while (!stack1.isEmpty()) { while (!stack1.isEmpty()) { TreeNode tmp = stack1.pop(); arrayList.add(tmp.val); stack2.push(tmp); } while (!stack2.isEmpty()) { TreeNode tmp2 = stack2.pop(); // 從左到右打印,所以右子樹先入棧 if (tmp2.right != null) { stack1.push(tmp2.right); } if (tmp2.left != null) { stack1.push(tmp2.left); } } } return arrayList; } public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } } //其他方法 /** public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayList<Integer>(); if(root == null) return list; Deque<TreeNode> deque = new LinkedList<TreeNode>(); deque.add(root); while(!deque.isEmpty()){ TreeNode t = deque.pop(); list.add(t.val); if(t.left != null) deque.add(t.left); if(t.right != null) deque.add(t.right); } return list; } } */
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot中整合Shiro實現(xiàn)權(quán)限管理的示例代碼
這篇文章主要介紹了SpringBoot中整合Shiro實現(xiàn)權(quán)限管理的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Springboot整合Mybatis和SQLite的詳細過程
這篇文章主要介紹了Springboot整合Mybatis和SQLite的詳細過程,本文通過圖文示例相結(jié)合給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-07-07詳解Java遞歸實現(xiàn)樹形結(jié)構(gòu)的兩種方式
在開發(fā)的過程中,很多業(yè)務(wù)場景需要一個樹形結(jié)構(gòu)的結(jié)果集進行前端展示,也可以理解為是一個無限父子結(jié)構(gòu),常見的有報表指標結(jié)構(gòu)、菜單結(jié)構(gòu)等,這篇文章主要介紹了Java遞歸實現(xiàn)樹形結(jié)構(gòu)的兩種方式,需要的朋友可以參考下2022-10-10gateway和jwt網(wǎng)關(guān)認證實現(xiàn)過程解析
這篇文章主要介紹了gateway和jwt網(wǎng)關(guān)認證實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11