tips:關於二叉樹的絕大多數問題都可以用遞迴方法來實現,dfs。一位二叉樹根節點去掉之後又分為兩個子樹,對於子樹本身也可以看左二叉樹來處理。所以遞迴可以說很好用了
二叉樹的建立:
public
class
bittree
public
bittree
(int data)
public
static bittree createbittree
(scanner reader)
return root;
}
前序 中序 後序 ,我在這裡就不寫遞迴了,太簡單了:
public
static
void
vistedbypre
(bittree root)
}public
static
void
vistedbypre1
(bittree root)
while
(!stack.
isempty()
)}}public
static
void
vistedbymid
(bittree root)
stack.
push
(root.rchild)
; stack.
push
(root);if
(root.lchild!=null) stack.
push
(root.lchild);}
}public
static
void
vistedbymid1
(bittree root)
while
(!stack.
isempty()
)}}public
static
void
vistedbyback
(bittree root)
stack.
push
(root);if
(root.rchild!=null) stack.
push
(root.rchild);if
(root.lchild!=null) stack.
push
(root.lchild);}
}public
static
void
vistedbyback1
(bittree root)
while
(!stack.
isempty()
) stack.
push
(root)
; root=root.rchild;
while
(root!=null)
}}
廣度遍歷二叉樹:
public
static
void
vistedbyguangdu
(bittree root)
}
求葉子節點個數:
public
static
intgetyezijiedian
(bittree root)
//葉子節點數 深度遍歷遞迴演算法
求二叉樹深度:
public
static
intgetshendu
(bittree root)
//求深度 dfs
}
判斷是否為完全二叉樹:
public
boolean
iswanquanbittree
(bittree root)
//廣度遍歷 一層一層的來遍歷 bfs}}
return
true
;}
需要好好理會遞迴的思想 那麼對於樹的相關知識,就會看起來相對簡單一點 二叉樹的一些問題
二叉樹的先序遍歷 遞迴 void preorder btnode ptr 二叉樹中序遍歷 遞迴 void inorder btnode ptr 二叉樹後序遍歷 遞迴 void pastorder btnode ptr 先序遍歷二叉樹 非遞迴 void nicepastorder btnode ptr...
二叉樹 路徑搜尋中的一些問題
目錄前言 1 求二叉樹的最大深度 leetcode104 2 求二叉樹的最小深度 leetcode111 3 求二叉樹的正向 逆向數字路徑和 leetcode129 4 求二叉樹的節點路徑和 leetcode437 5 小結 重要 二叉樹的路徑搜尋就是乙個簡易版的行程回溯演算法,之所以是簡易版是因為...
有關二叉樹的一些問題集合(一)
二叉樹的資料結構 class treenode1.求二叉樹的最大深度 int maxdeath treenode node intleft maxdeath node.left intright maxdeath node.right return math.max left,right 1 2.求...