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)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot中整合Shiro實現(xiàn)權(quán)限管理的示例代碼
這篇文章主要介紹了SpringBoot中整合Shiro實現(xiàn)權(quán)限管理的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09
Springboot整合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-10
gateway和jwt網(wǎng)關(guān)認證實現(xiàn)過程解析
這篇文章主要介紹了gateway和jwt網(wǎng)關(guān)認證實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-11-11

