二叉樹相關演算法

2021-05-06 18:27:46 字數 2701 閱讀 9950

節點:

class

node

<

t>

public

node

<

t>

left 

public

node

<

t>

right 

public

node(t value, node

<

t>

left, node

<

t>

right)

public

node(t value) : 

this

(value, 

null

, null) }

二叉樹:

前中後深度優先遍歷非遞迴,上到下(下到上)寬度優先遍歷非遞迴,輸出某層,獲取深度

class

binarytree

<

t>

public

void

clear()

public

void

preorder()

}public

void

midorder()

current 

=stack.pop();

console.write(current.value +"

");}}

public

void

afterorder()

while

(tovisit.count !=0

)else

else

console.writeline(node.value +"

");}}

}public

void

updownorder()

}public

void

downuporder()

intc 

=stack.count;

for(

inti =0

; i 

<

c; i++)

}public

void

printnodeatlevel(

intlevel)

private

void

printnodeatlevel(node

<

t>

node, 

intlevel)

printnodeatlevel(node.left, level -1

);printnodeatlevel(node.right, level -1

);}public

intgetdepth()

private

intgetdepth(node

<

t>

node)}

搜尋二叉樹:

搜尋、包含、增加刪除、獲取父節點

class

binarysearchtree

<

t>

: binarytree

<

t>

return

current;

}public

bool

contains(t data)

return

false;}

public

node

<

t>

getparent(node

<

t>

node)

else

if(result 

<0)

}return

parent;

}public

void

add(t data)

else

if(result 

<0)

}if(parent 

==null

)base

.root =n;

else

}public

bool

remove(t data)

else

if(result 

<0)

if(current 

==null

)return

false

;else

result 

=comparer.compare(current.value, data);}if

(current.right 

==null)}

else

if(current.right.left 

==null)}

else

lmparent.left 

=leftmost.right;

leftmost.left 

=current.left;

leftmost.right 

=current.right;

if(parent 

==null

)base

.root 

=leftmost;

else

}current.left 

=current.right 

=null

;current 

=null

;return

true;}

}

二叉樹相關演算法 二

leetcode 437.path sum iii 第乙個想法就是遍歷二叉樹,找出每個節點的可能性。這個思路時間複雜度為o n 2 private int num public intpathsum treenode root,int sum private void recur treenode ...

二叉樹的相關演算法

二叉樹 二叉查詢樹 是這樣一類的樹,父節點的左邊孩子的key都小於它,右邊孩子的key都大於它。二叉樹在查詢和儲存中通常能保持logn的查詢 插入 刪除,以及前驅 後繼,最大值,最小值複雜度,並且不占用額外的空間。include includeusing namespace std class tr...

二叉樹相關演算法(Java)

二叉樹的非遞迴遍歷 其他相關演算法 輸入一顆二叉樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點 含根,葉子結點 形成一條路徑,最長路徑的長度為樹的深度 public int treedepth treenode root int left treedepth root.left int r...