76.Binary Tree Inorder Traversal
2341 ワード
Given a binary tree,return the インディーズ trversal of its nodes'values.
For example:Given binary tree
備考:以前は再帰のアルゴリズムだけを書いていましたが、文章を書いていませんでした.今は再帰のアルゴリズムを書いて、他の再帰のアルゴリズムを後で追加します.
チェーンとスタックを利用して、nodeはスタックの要素を表しています.一番左の枝のすべての左の子供をスタックに入れて、ポップアップの要素popnodeは結果listに参加する必要があります.そしてpopnodeは右の子供がいるかどうかを判断します.あれば、その右の子供をnodeとしてスタックに入れます.サイクルを続けます
For example:Given binary tree
{1,#,2,3}
、 1
\
2
/
3
return [1,3,2]
.備考:以前は再帰のアルゴリズムだけを書いていましたが、文章を書いていませんでした.今は再帰のアルゴリズムを書いて、他の再帰のアルゴリズムを後で追加します.
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
if(root == null){
return list;
}else{
list.addAll(inorderTraversal(root.left));
list.add(root.val);
list.addAll(inorderTraversal(root.right));
}
return list;
}
方法の2:反復の思想を採用して、順番に二叉の木を遍歴します.チェーンとスタックを利用して、nodeはスタックの要素を表しています.一番左の枝のすべての左の子供をスタックに入れて、ポップアップの要素popnodeは結果listに参加する必要があります.そしてpopnodeは右の子供がいるかどうかを判断します.あれば、その右の子供をnodeとしてスタックに入れます.サイクルを続けます
/**
* 。( )
* @param root
* @return
*/
public List<Integer> inorderTraversal2(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
if(root == null){
return list;
}else{
TreeNode node = root;
Stack stack = new Stack();
stack.push(node);
/*node ,popnode */
while(!stack.isEmpty()){
while(node.left != null){// , 。
node = node.left;
stack.push(node);
}
TreeNode popnode= (TreeNode) stack.pop();//
list.add(popnode.val);
/* , , */
if(popnode.right != null){
node = popnode.right;
stack.push(node);
}
}
}
return list;
}
/**
* 。
* 。
*/
public List<Integer> inorderTraversal3(TreeNode root){
List<Integer> list = new ArrayList<Integer>();
if(root == null){
return list;
}else{
TreeNode node = root;
Stack stack = new Stack();
stack.push(node);
/*node ,popnode */
while(!stack.isEmpty()){
if(node.left != null){
node = node.left;
stack.push(node);
}else{
TreeNode popnode= (TreeNode) stack.pop();//
list.add(popnode.val);
/* , , */
if(popnode.right != null){
node = popnode.right;
stack.push(node);
}
}
}
}
return list;
}
似たようなテーマは二叉樹の前の順序でいっぱいです.http://blog.csdn.net/u010339647/article/details/50505831