以下是關於二叉樹的基本操作(遞迴實現)
1、求二叉樹的總節點個數
2、求葉子節點個數
3、求第k層節點個數
4、求二叉樹的高度
5、查詢給定val所在的節點
//求樹的節點個數
public static int sumnode(node root)
return 1 + sumnode(root.left) + sumnode(root.right);
}//求葉子節點個數
//葉子節點:左子樹和右子樹都為空
public static int leafnode(node root)
if(root.left==null&&root.right==null)
return leafnode(root.left)+leafnode(root.right);
}//求第k層的節點個數
//第k層=第k-1層左子樹節點個數+第k-1層右子樹節點個數
public static int knode(node root,int k)
if(k==1)
return knode(root.left,k-1)+knode(root.right,k-1);
}//求二叉樹的高度
//從根節點到葉子節點最長的路徑即為二叉樹的高度/最大深度
public static int maxdepth(node root)
if(root.left==null&&root.right==null)
int leftdepth=maxdepth(root.left);
int rightdepth=maxdepth(root.right);
return 1+(leftdepth>rightdepth?leftdepth:rightdepth);
}//查詢val所在節點
public static node find(node root,char tofind)
if(root.val==tofind)
//先查詢左子樹
node result=find(root.left,tofind);
if(result!=null)
//再查詢右子樹
return find(root.right,tofind);
}
二叉樹基本操作
tree.h ifndef tree h define tree h include typedef int element 定義二叉樹 typedef struct nodetreenode void preorder treenode root 遞迴前序遍歷 void inorder treen...
二叉樹基本操作
一.二叉樹的定義 二.二叉樹的建立 定義一棵無資料的二叉樹 6 int left size 7 int right size 為了操作簡便,我們定義一棵不需要儲存資料的二叉樹,只要能儲存節點之間的邏輯關係就行,所以用兩個陣列來表示。left i 第i個節點的左子節點的序號 right i 第i個節點...
二叉樹基本操作
include include define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b,char str 由str串建立二叉鏈 j ch str j btnode f...