給定乙個二叉樹,返回它的中序 遍歷。
示例:輸入: [1,null,2,3]
1\2
/3
輸出: [1,3,2]
這道題在王道408中有講到,但是記憶不是特別清晰了於是再寫了一次
首先當然是最簡單的遞迴寫法
class solution
public listhelp(treenode root,list list)
help(root.left,list);
list.add(root.val);
help(root.right,list);
return list;
}}
接著重點來了 ,非遞迴寫法 這就要用到棧了
1
2 3
4 5 6 7
輸出的序列是 4251637 先走到最左 一次入棧 ,到底後出棧,訪問該節點,接著訪問訪問其右子樹 依然是走左走到底,同時入棧,到底後出棧
class solution
stackst = new stack();
while(root!=null||!st.isempty())
//左子樹入棧完成,應出棧棧頂節點,並且訪問
treenode temp= st.pop();
//訪問當前出棧節點
list.add(temp.val);
//將root置位 當前出棧節點的右子樹 ,接著對右子樹 走開始的流程:往左走,依次入棧
root=temp.right;
}//左子樹已經入棧完成.
return list;
}}
94 二叉樹的中序遍歷
94.二叉樹的中序遍歷 給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 1 2 3輸出 1,3,2 高階 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?definition for a binary tree node.struct treenode class solutio...
94 二叉樹的中序遍歷
給定乙個二叉樹的根節點root,返回它的中序遍歷。示例 1 輸入 root 1,null,2,3 輸出 1,3,2 示例 2 輸入 root 輸出 示例 3 輸入 root 1 輸出 1 示例 4 輸入 root 1,2 輸出 2,1 示例 5 輸入 root 1,null,2 輸出 1,2 遞迴 ...
力扣94 二叉樹的中序遍歷 中序遍歷
給定乙個二叉樹,返回它的中序 遍歷。示例 輸入 1,null,2,3 12 3輸出 1,3,2 高階 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?中序遍歷是左子樹 根 右子樹。這個是同乙個規律適用於整個樹,所以使用遞迴。結束條件為沒有發現值,即節點為null。definition for a bi...