void findlayer(bitree *t,int k)
{
if(t!=NULL)
{ int count=1;
if(t.data==k)
cout<<count<<endl;
count++;
findlayer(t->lchild,k);
findlayer(t->lchild,k);
count--;
}
}
完整代码
#include <iostream>
using namespace std;
struct TreeNode {
int data;
struct TreeNode* lchild;
struct TreeNode* rchild;
};
typedef struct TreeNode* bitree;
bitree createNode(int data) {
bitree newNode = new TreeNode;
newNode->data = data;
newNode->lchild = NULL;
newNode->rchild = NULL;
return newNode;
}
bitree createBinaryTree() {
bitree root = createNode(1);
root->lchild = createNode(2);
root->rchild = createNode(3);
root->lchild->lchild = createNode(4);
root->lchild->rchild = createNode(5);
root->rchild->lchild = createNode(6);
root->rchild->rchild = createNode(7);
return root;
}
void findlayer(bitree t, int k, int count) {
if (t != NULL) {
if (t->data == k) {
cout << "节点 " << k << " 所在的层数为:" << count << endl;
}
count++;
findlayer(t->lchild, k, count);
findlayer(t->rchild, k, count);
count--;
}
}
int main() {
bitree root = createBinaryTree();
int k = 5; // 目标节点值
int count = 1; // 初始层数为 1
findlayer(root, k, count);
return 0;
}