给定任意一结点,输出根节点到该结点的路径C++
时间: 2024-11-13 21:40:14 浏览: 11
在C++中,为了输出从根节点到给定任意节点的路径,你可以使用深度优先搜索(Depth First Search, DFS)或者广度优先搜索(Breadth First Search, BFS)。这里我们以DFS为例,假设你有一个二叉树结构,并且每个节点都有一个parent指针来表示其父节点。
```cpp
#include <iostream>
using namespace std;
// 定义二叉树节点结构
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode* parent; // 父节点指针
};
// 用于存储路径的辅助栈
stack<TreeNode*> dfsStack;
// 输出从根到给定节点的路径函数
void printPathToNode(TreeNode* node) {
if (node == nullptr) return; // 如果节点为空,直接返回
// 先将当前节点压入栈
dfsStack.push(node);
while (!dfsStack.empty()) {
TreeNode* currentNode = dfsStack.top();
cout << currentNode->val << " "; // 输出当前节点值
// 如果到达目标节点,就停止并回溯
if (currentNode == node) break;
dfsStack.pop(); // 弹出栈顶元素,继续处理其父节点
if (currentNode->right != nullptr) dfsStack.push(currentNode->right); // 遍历右孩子
if (currentNode->left != nullptr) dfsStack.push(currentNode->left); // 否则遍历左孩子
}
}
int main() {
// 初始化二叉树...
// ...
// 调用函数并传入目标节点
TreeNode* targetNode = ...; // 你要查找的节点
printPathToNode(root); // root是根节点
return 0;
}
```
阅读全文