給定一棵完全二叉樹的頭節點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...