前言:
今天小伙伴们对“leetcode二叉树前序遍历”大概比较看重,你们都需要学习一些“leetcode二叉树前序遍历”的相关知识。那么小编在网络上网罗了一些对于“leetcode二叉树前序遍历””的相关知识,希望各位老铁们能喜欢,同学们快快来了解一下吧!写在前面
本文答案参考(Ctrl+CV)自 LeetCode 官方题解。
程序员必备,代码要刻入DNA![看][ok]
代码:递归
void preorderTraversal(TreeNode *root) { if (root == NULL) { return; } visit(root); preorderTraversal(root->left); preorderTraversal(root->right);}代码:迭代
void preorderTraversal(TreeNode* root) { if (root == NULL) { return res; } stack<TreeNode*> s; TreeNode* node = root; while (!s.empty() || node != NULL) { while (node != NULL) { visit(node); s.push_back(node); node = node->left; } node = s.top(); s.pop(); node = node->right; }}更牛逼的解法:Morris 遍历
该方法可以在线性时间内,只占用常数空间 来实现前序遍历。
Morris 遍历的核心思想是利用树的大量空闲指针,实现空间开销的极限缩减。
具体就不展开了,下次有时间再看吧[捂脸]
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #leetcode二叉树前序遍历