龙空技术网

LeetCode笔记|144:二叉树的前序遍历

可爱小男孩76 110

前言:

今天小伙伴们对“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二叉树前序遍历