完全二叉樹節點數

2021-09-24 05:12:24 字數 604 閱讀 7107

題目:

給定一棵完全二叉樹的頭節點head,返回這棵樹的節點個數。如果完全二叉樹的節點數為n,請實現時間複雜度低於o(n)的解法。 

方法(1):遞迴o(n)演算法

int nodenum(struct treenode* head) 

return 1 + nodenum(head->left) + nodenum(head->right);

}

方法(2):先計算出二叉樹的高度(一直走左路法),如果二叉樹的右子樹的高度==二叉樹高度減1的話,就說明左子樹的滿二叉樹,可以根據公式pow(2,h-1)計算,在模擬遞迴右子樹;否則說明右子樹是滿二叉樹,模擬遞迴左子樹,直到結點為空

/**

struct treenode

};*/

class solution

return count;

}int nodenum(struct treenode* head)

else//說明右子樹是完全二叉樹,可以直接算

h--;//每走一層,高度減一層

}return count;

}};

完全二叉樹節點數

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

二叉樹節點數量關係

node 表示一棵樹節點總數量 node1 表示度為1的節點數量 node2 表示度為2的節點數量 leaf 表示葉子節點的數量 line 表示一棵樹中莖 也就是兩個節點之間的連線 的數量 顯然 node 1 line node node1 node2 leaf line node1 2 node2...

證明二叉樹節點數公式

n0 葉節點總數 n1 只有1個孩子的節點總數 n2 有2個孩子節點的總數 有 n0 n2 1 不那麼嚴密地證明一下 假設有完美二叉樹1個,共k層 那麼最下層k層就是n0 2 k 1 再上面一層k 1層之上,總共的節點,其實都是有2個孩子的節點,即 n2 2 k 1 1 代換一下就是 n2 n0 1...