有没有什么方法能获得一个节点下的【所有节点】,包括子节点和孙节点

有没有什么方法能获得一个节点下的【所有节点】,包括子节点和孙节点,第1张

首先得到节点控件的实例,因为不知道你是用的什么语言。 我就只能给你举例。

例如TreeNode treenode1,获得之后,找到实例控件的,你想得到的节点,比如当前选中的,一般都是Selected的一类属性。 然后这个属性之后,应该有一个allNodes属性之类的。 就可以得到了。

因为不知道你的语言,也不能给出具体的方法名称。你可以自己实践一下,一步一步来很简单的。

算法思想:

对每个节点来说:

1、如果它没有子节点,那么它就是叶子节点。

2、如果它有子节点,那么它的叶子节点数量 = 左子树叶子节点数量 + 右子树叶子节点数量。

算法代码:

unsigned int getLeafCount(struct node node)

{

  if(node == NULL)      

    return 0;

  if(node->left == NULL && node->right==NULL)     

    return 1;           

  else

    return getLeafCount(node->left)+

           getLeafCount(node->right);     

}

时间复杂度:O(n),空间复杂度:O(n)

---------------------------------------------------

附上一个例子:

#include <stdioh>

#include <stdlibh>

 

/ A binary tree node has data, pointer to left child

   and a pointer to right child /

struct node

{

    int data;

    struct node left;

    struct node right;

};

 

/ Function to get the count of leaf nodes in a binary tree/

unsigned int getLeafCount(struct node node)

{

  if(node == NULL)      

    return 0;

  if(node->left == NULL && node->right==NULL)     

    return 1;           

  else

    return getLeafCount(node->left)+

           getLeafCount(node->right);     

}

 

/ Helper function that allocates a new node with the

   given data and NULL left and right pointers /

struct node newNode(int data)

{

  struct node node = (struct node)

                       malloc(sizeof(struct node));

  node->data = data;

  node->left = NULL;

  node->right = NULL;

   

  return(node);

}

 

/Driver program to test above functions/ 

int main()

{

  /create a tree/ 

  struct node root = newNode(1);

  root->left        = newNode(2);

  root->right       = newNode(3);

  root->left->left  = newNode(4);

  root->left->right = newNode(5);   

   

  /get leaf count of the above created tree/

  printf("Leaf count of the tree is %d", getLeafCount(root));

   

  getchar();

  return 0;

}

以上就是关于有没有什么方法能获得一个节点下的【所有节点】,包括子节点和孙节点全部的内容,包括:有没有什么方法能获得一个节点下的【所有节点】,包括子节点和孙节点、求统计二叉树叶子结点数的递归算法、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10090719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存