二叉樹的前中後非遞迴遍歷 迭代法

2021-10-24 05:14:37 字數 936 閱讀 7468

利用輔助棧的方法進行迭代的前中後遍歷。

前序遍歷

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 思路 採用棧作為...