题目描述 C++代码 // // Created by YaMiwan on 2020-05-05. // #include <iostream> #include <vector> using namespace std; struct TreeNode { // 二叉树结构 int val; // 数据域 TreeNode *left; // 左右子树指针 TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; void preorder_print(TreeNode *node, int layer) { // *node为正在遍历的节点,layer为当前节点的层数 if (!node) { return; } for (int i = 0; i < layer; i++) { printf("-----"); // 根据层数打印相应的'_' } cout << node->val << endl; preorder_print(node->left, layer + 1); // 遍历左子树,层数+1 preorder_print(node->right, layer + 1); // 遍历右子树,层数+1 } int main() { TreeNode a(1); TreeNode b(2); TreeNode c(5); TreeNode d(3); TreeNode e(4); TreeNode f(6); a.left = &b; a.right = &c; b.left = &d; b.right = &e; c.right = &f; preorder_print(&a, 0); return 0; } 输出 1 -----2 ----------3 ----------4 -----5 ----------6