二叉樹的前序遍歷(遞迴 迭代)

2021-09-25 06:53:45 字數 931 閱讀 9587

給定乙個二叉樹,返回它的前序遍歷。

示例:

輸入: [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...