二叉樹的前中後序遍歷的迭代演算法

2021-10-09 11:20:25 字數 1040 閱讀 1222

public

class

treenode

treenode

(int val)

treenode

(int val, treenode left, treenode right)

}

最簡單,因為自己的節點不需要遍歷第二次

class

solution

// 每次將該結點放入結果集之後,依次將不為空的左右孩子進棧

while

(!stack.

empty()

)if(node.left != null)

}return result;

}}

一直壓棧左節點,直到自己為空後再將棧頂元素放入結果集,右孩子作為當前節點繼續迴圈

class

solution

node = stack.

pop();

result.

add(node.val)

; node = node.right;

}return result;

}}

class

solution

// 將節點後序進棧,出棧寫入結果集

while

(!stack.

empty()

)if(node.left != null)

// 為空則是到了標誌位——此時棧頂結點不需要再進棧,直接加入結果集

}else

}return result;

}}

class

solution

// 每次將出棧元素直接加入到結果集最前面

while

(!stack.

empty()

)if(node.right != null)

}return result;

}}

二叉樹的前中後序遍歷

秋招記錄 對一棵二叉樹進行遍歷,我們可以採取3種順序進行遍歷,分別是前序遍歷 中序遍歷和後序遍歷。這三種方式是以訪問父節點的順序來進行命名的。假設父節點是n,左節點是l,右節點是r,那麼對應的訪問遍歷順序如下 前序遍歷 中左右 n l r 中序遍歷 左中右 l n r 後序遍歷 左右中 l r n ...

二叉樹的前 中 後序遍歷

import lombok.data import lombok.noargsconstructor data noargsconstructor class treenode 前序遍歷 根 左 右 public void preorder 遞迴向右子樹前序遍歷if this right null ...

二叉樹的前 中 後序遍歷

前序 根左右 中序 左根右 後序 左右根 前序遍歷 124563 中序遍歷 546213 後序遍歷 564231 package datastructure public class binarytreedemo class binarytree public binarytree hero roo...