完全二叉樹節點數

2021-10-24 21:52:49 字數 1379 閱讀 2691

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

package main

import . "nc_tools"

/* * type treenode struct

*//**

* * @param head treenode類

* @return int整型

*/func nodenum( head *treenode ) int

head.val = 1

tmp := findnode(head)

return tmp.val

}func judgedepth(root *treenode)bool

tmp = root

tmp = tmp.right

rightdepth++

for tmp != nil

if leftdepth > rightdepth

return false

}func findnode(root *treenode)*treenode

flag := judgedepth(root)

if flag == true

//遍歷右子樹

root.right.val = root.val*2+1

return findnode(root.right)

}

改進解題1

package main

import . "nc_tools"

/* * type treenode struct

*//**

* * @param head treenode類

* @return int整型

*/func nodenum( head *treenode ) int

tmp := findnode(head,1)

return tmp

}func judgedepth(root *treenode)bool

tmp = root

tmp = tmp.right

rightdepth++

for tmp != nil

if leftdepth > rightdepth

return false

}func findnode(root *treenode,val int)int

flag := judgedepth(root)

if flag == true

//遍歷右子樹

return findnode(root.right,(val*2+1))

}

完全二叉樹節點數

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

二叉樹節點數量關係

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...