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...