資料結構定義:
// definition for a binary tree node.
public class treenode
treenode(int val)
treenode(int val, treenode left, treenode right)
}
遞迴寫法:class solution
}
普通迭代:class solution
if((node=stack.peek()).right == null
|| node.right == pre)else
}return result;
}}
//思路:
//前序遍歷的過程是:(根-左-右)
//那麼我們遍歷的過程變為:(根-右-左),最後的結果再進行下倒置
//順序就變成了:(左-右-根),完成對後序的遍歷
class solution
stackstack = new stack<>();
treenode node =root;
while(!stack.isempty() || node != null)
node = stack.pop().left;
}collections.reverse(result);
return result;
}}
莫里斯遍歷://還是借鑑前序遍歷的思路,莫里斯遍歷可參看我的中序遍歷一文
class solution
treenode node =root,pre = null;
while(node != null)else
if(pre.left == null)else}}
collections.reverse(result);
return result;
}
借鑑頭指標插入法:class solution
stack.addfirst(root);
while(!stack.isempty())
if(node.right != null)
}return result;
}}
二叉樹幾種遍歷方式
一 基本概念 每個結點最多有兩棵子樹,左子樹和右子樹,次序不可以顛倒。性質 1 非空二叉樹的第n層上至多有2 n 1 個元素。2 深度為h的二叉樹至多有2 h 1個結點。滿二叉樹 所有終端都在同一層次,且非終端結點的度數為2。在滿二叉樹中若其深度為h,則其所包含的結點數必為2 h 1。完全二叉樹 除...
二叉樹遍歷方式
先序遍歷 根 左子樹 右子樹 遞迴版本 public static void preprint treenode root 非遞迴版本 public static void preorder treenode root if s.empty 中序遍歷 左子樹 根 右子樹 遞迴版本 public st...
二叉樹應用 二叉搜尋樹的後續遍歷序列
題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷序列的結果。假設輸入的陣列的任意兩個數字都互不相同。分析 在二叉搜尋樹的後序遍歷中,根節點在最後面。前面的序列可以分為兩個部分 乙個為左子樹,小於根節點的值 乙個為右子樹,大於根節點的值。左子樹序列和右子樹序列同樣應該為後序遍歷序列,則可...