LeetCode 94.二叉树的中序遍历 C++代码实现
程序员文章站
2022-05-20 14:05:50
...
题目描述:
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2]
思路:1.递归:按照中序遍历的定义(左根右进行访问)2.非递归:任何递归都可以通过栈来实现非递归,所以将左边依次压入栈中然后访问最左边的,依次循环即可。
代码实现:
1.递归实现
template<typename T>
void MidOder(TreeNode<T> *root) {//左根右依次访问
TreeNode<T> *temp = root;
if (!temp) return;
MidOder(root->left);
cout << root->data << " ";
MidOder(root->right);
}
2.非递归实现:
template<typename T>
void MidOderNoRe() {
TreeNode<T> *temp = root;
stack<TreeNode<T> *> s;
if (!temp) return;
while (temp||!s.empty()) {
while (temp) {
s.push(temp);
temp = temp->left;
}
temp = s.top(); //与先序相比输出了根节点
cout << temp << " ";
s.pop();
temp = temp->right;
}
cout << endl;
}
上一篇: 45. 跳跃游戏 II
下一篇: 126. 单词接龙 II
推荐阅读
-
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
-
[PHP] 算法-根据前序和中序遍历结果重建二叉树的PHP实现
-
Python实现二叉树前序、中序、后序及层次遍历示例代码
-
C++实现LeetCode(105.由先序和中序遍历建立二叉树)
-
C++实现LeetCode(889.由先序和后序遍历建立二叉树)
-
C++实现LeetCode(106.由中序和后序遍历建立二叉树)
-
JavaScript实现二叉树的先序、中序及后序遍历方法详解
-
leetcode103——二叉树的锯齿形层序遍历——java实现
-
python实现二叉树的层序、前序、中序、后序、之字形遍历
-
C++ 非递归实现二叉树的前中后序遍历