求二叉樹節點數 採用遞迴和非遞迴方法

2021-07-11 04:41:05 字數 1103 閱讀 6810

/*求二叉樹節點數 -- 採用遞迴和非遞迴方法(本例非遞迴採用先序遍歷)

經除錯可執行原始碼及分析如下:

***/

#include

#include

#include

using

std::cout;

using

std::cin;

using

std::endl;

using

std::stack;

/*二叉樹結點定義*/

typedef

struct btreenode

btreenode;

/*求二叉樹節點數

對任意乙個給定子樹的節點數,左子樹節點數+右子樹節點數+1,加1是加上根節點自身。

遞迴方式:

如果給定根節點為null,則返回0;

如果給定根節點不為null,則返回: 左子樹節點數+右子樹節點數+1

*//*遞迴實現求節點個數*/

int get_nodes_number(btreenode *proot)

/*非遞迴:本例採用先序遍歷計算

**/int preorder_get_nodes_number(btreenode* proot)

if (!st.empty())

}return num;

}/*初始化二叉樹根節點*/

btreenode* btree_init(btreenode* &bt)

/*先序建立二叉樹*/

void pre_crt_tree(btreenode* &bt)

else

}int main()

/*執行結果:

a b c # # # d e # # #

---以上為輸入---

---以下為輸出---

二叉樹節點個數為:5

非遞迴遍歷過程如下:

節點:a

節點:b

節點:c

節點:d

節點:e

二叉樹節點個數為:5

請按任意鍵繼續. . .

本例建立的二叉樹形狀:

ab d

c e

完全二叉樹節點數

題目 給定一棵完全二叉樹的頭節點head,返回這棵樹的節點個數。如果完全二叉樹的節點數為n,請實現時間複雜度低於o n 的解法。方法 1 遞迴o n 演算法 int nodenum struct treenode head return 1 nodenum head left nodenum hea...

完全二叉樹節點數

給定一棵完全二叉樹的頭節點head,返回這棵樹的節點個數。如果完全二叉樹的節點數為n,請實現時間複雜度低於o n 的解法。package main import nc tools type treenode struct param head treenode類 return int整型 func ...

二叉樹 遞迴 非遞迴

include include include include using namespace std typedef struct node bintree typedef struct node1 btnode void creatbintree char s,bintree root 建立二叉...