LeetCode 7 Binary Tree Postorder Traversal
2049 단어 귀속두 갈래 나무비귀속후순이 두루 다니다
분석:
귀속 해법은 비교적 직관적이다.
4
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<Integer>();
postorderTraversal(root, result);
return result;
}
private void postorderTraversal(TreeNode node, List<Integer> result){
if(node == null) return;
if(node.left != null)
postorderTraversal(node.left, result);
if(node.right != null)
postorderTraversal(node.right, result);
result.add(node.val);
}
}
비귀속해법, 보조창고가 필요합니다.왼쪽 아이를 방문하기 전에 부 노드를 창고에 눌러 잎을 알고 탄창이 부 노드를 방문하기 전에 부 노드의 오른쪽 아이가 방문했는지 확인하고 없으면 오른쪽 아이를 먼저 방문한다./**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<Integer>();
if(root == null) return result;
Stack<TreeNode> st = new Stack<TreeNode>();
TreeNode node = root;
TreeNode pre = node;
while(node != null || st.size() > 0){
// ,
while(node != null){
st.push(node);
node = node.left;
}
if(st.size()>0){
TreeNode right = st.peek().right;
// ,
if(right == null || right == pre){
pre = st.pop();
result.add(pre.val);
}else{
node = right;
}
}
}
return result;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java 데이터 구조 2차원 트리의 실현 코드일.두 갈래 트리 인터페이스 2 노드 클래스 3. 두 갈래 나무 구현 이 글을 통해 여러분께 도움이 되었으면 좋겠습니다. 본 사이트에 대한 지지에 감사드립니다!...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.