給定乙個二叉樹,返回它的前序遍歷。
示例:
輸入: [1,null,2,3] 1\
2/
3 輸出: [1,2,3]
高階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?
遞迴確實簡單,隨便寫乙個。
/**
* definition for a binary tree node.
* public class treenode
* }*/class
solution
public
void
dfs(treenode root)
}
這個迭代是自己寫的,思路也容易理解,就是把遞迴的順序用迭代實現了。把最左邊的節點先訪問了,然後再依據出棧順序訪問右孩子的最左邊的節點。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class
solution
// 每次出棧,若有右孩子,將其右孩子的最左邊全部訪問入棧
while
(!nstack.
empty()
)}return ans;}}
;
這個迭代是力扣題解,巧妙用了入棧出棧順序,看起來優雅很多。
class
solution
stack.
add(root)
;while
(!stack.
isempty()
)if(node.left != null)
}return output;
}}
二叉樹的非遞迴前序遍歷
二叉樹的非遞迴前序遍歷,需要借助棧 棧又是由順序表實現的 順序表的實現 首先我們需要乙個二叉樹 通過前序遍歷的陣列 abd gi j ce hk f 構建二叉樹 之前我們已經有二叉樹遞迴版的前序,中序,後序遍歷 通過前序遍歷的陣列 abd gi j ce hk f 構建二叉樹,並得到二叉樹的前序遍歷...
二叉樹的前序非遞迴遍歷
include 二叉樹的先序遞迴遍歷 include include 假定利用陣列a n 順序儲存乙個棧,用top 表示棧頂指標,top 1表示棧空,已知棧未滿,當元素x進棧時的操作為 x b.a top x c.a top x d.a top x top是先 1再運算,所以是從0開始的 而top ...
前序遍歷二叉樹
題目 給定乙個二叉樹,返回它的 前序 遍歷。示例 輸入 1,null,2,3 輸出 1,2,3 方法一 遞迴 這是最容易想到且最容易實現的演算法。definition for a binary tree node.struct treenode treenode int x val x left n...