利用輔助棧的方法進行迭代的前中後遍歷。
前序遍歷
vectorpreorder(treenode* root)
stacks;
treenode* curr = root;
while (!s.empty() || curr)
curr = s.top();
s.pop();
curr = curr->right;
} return res;
}
中序遍歷
vectorinorder(treenode* root)
stacks;
treenode* curr = root;
while (!s.empty() || curr)
curr = s.top();
s.pop();
res.push_back(curr->val);
curr = curr->right;
} return res;
}
後序遍歷:這裡是利用先獲得根右左的結果,然後將結果反轉過來就是左右根,即後序遍歷的結果
vectorpostorder(treenode* root)
stacks;
treenode* curr = root;
while (!s.empty() || curr)
curr = s.top();
s.pop();
curr = curr->left;
} reverse(res.begin(), res.end());
return res;
}
二叉樹的前中後遍歷遞迴非遞迴實現
好吧,我終於把前中後 遞迴和非遞迴的都寫出來了。如下 不解釋 include includeusing namespace std struct btnode void assertbtn btnode root1,int a else 非遞迴前序遍歷 stack s pre void preord...
迭代法 二叉樹的中序遍歷
給定乙個二叉樹,返回它的中序 遍歷。輸入 1,null,2,3 12 3輸出 1,3,2 通過堆疊實現遞迴的過程 definition for a binary tree node.struct treenode class solution while tree.empty return ans ...
二叉樹的迭代遍歷(前,中,後)
目錄 1 迭代方式的前序遍歷 2 迭代方式的中序遍歷 3 迭代方式的後續遍歷 class solution stacks new stack while root null s.isempty root s.peek s.pop root root.right return res 思路 採用棧作為...