二叉樹的基礎操作

2021-10-05 17:11:49 字數 1996 閱讀 3962

1、前序遍歷:

public static void preorder(node root) 

system.out.println(root.val + " ");

preorder(root.left);

preorder(root.right);

}

2、中序遍歷

public static void inorder(node root) 

inorder(root.left);

system.out.println(root.val + " ");

inorder(root.right);

}

3、後序遍歷

public static void postorder(node root) 

postorder(root.left);

postorder(root.right);

system.out.println(root.val+ " ");

}

4、求一棵樹中的結點個數

(1)、使用靜態變數

public static int size = 0;

public static void size(node root)

size++;

size(root.left);

size(root.right);

}

(2)、不使用靜態變數

public static int size2(node root) 

return 1 + size2(root.left) + size2(root.right);

}

5、求葉子結點個數

(1)、使用靜態變數

public static int leafsize = 0;

public static void leafsize(node root)

if (root.right==null&&root.left==null)

leafsize(root.left);

leafsize(root.right);

}

(2)、不使用靜態變數

public static int leafsize2(node root) 

return leafsize2(root.left) + leafsize2(root.right);

}

6、求第k層結點個數

public static int klevelsize(node root, int k) 

if (k==1)

return klevelsize(root.left,k-1) + klevelsize(root.right,k-1);

}

7、樹種是否包含某個元素

(1)、使用靜態變數

public static node result = null;

public static void find(node root, char tofind)

if (root.val==tofind)

find(root.left,tofind);

find(root.right,tofind);

}

(2)、不使用靜態變數

public static node find2(node root, char tofind) 

if (root.val==tofind)

node result = find2(root.left,tofind);

if (result!=null)

return find2(root.right,tofind);

}

二叉樹 基礎操作

核心思想 遞迴處理 前序 根左右 中序 左根右 後序 左右根 class node public class testtree system.out.print root.val preorder root.left preorder root.right 中序 public static void...

二叉樹的基礎操作

struct bitree 初始化bitree create 若想中序或後序建立,則只需改變函式中 t data a t lchild create t rchild create 這三條語句的順序 先給t data a在先的話是先序,在中間的話是中序,在最後的話是後序。先序的遍歷順序是根節點 左子...

二叉樹 二叉樹的相關操作

遞迴實現 建立求樹高 求葉子數 求節點數 統計度為2的結點個數 後序輸出 先序輸出 中序輸出 交換左右子樹 include include include define true 1 define false 0 define ok 1 define error 0 define overflow ...