
目录


- public boolean evaluateTree(TreeNode root) {
- //出口
- if(root.left == null) {
- return root.val == 0 ? false : true;
- }
- boolean left = evaluateTree(root.left);
- boolean right = evaluateTree(root.right);
- return root.val == 2 ? left | right : left & right;
- }



- public int sumNumbers(TreeNode root) {
- return dfs(root,0);
- }
- public int dfs(TreeNode root,int preSum) {
- preSum = preSum * 10 + root.val;
- //递归出口
- if(root.left == null && root.right == null) {
- return preSum;
- }
- int num = 0;
- if(root.left != null) {
- num += dfs(root.left,preSum);
- }
- if(root.right != null) {
- num += dfs(root.right,preSum);
- }
- return num;
- }


- public TreeNode pruneTree(TreeNode root) {
- if(root == null) {
- return null;
- }
- root.left = pruneTree(root.left);
- root.right = pruneTree(root.right);
- if(root.left == null && root.right == null && root.val == 0) {
- root = null;
- }
- return root;
-
- }


- long prev = Long.MIN_VALUE;
- public boolean isValidBST(TreeNode root) {
- if(root == null) {
- return true;
- }
- boolean left = isValidBST(root.left);
- //剪枝
- if(left == false) {
- return false;
- }
- //当前节点
- boolean ret = false;
- if(prev < root.val) {
- prev = root.val;
- ret = true;
- }
- boolean right = isValidBST(root.right);
- return left && ret && right;
- }

- int count;
- int ret;
- public int kthSmallest(TreeNode root, int k) {
- count = k;
- dfs(root);
- return ret;
- }
- public void dfs(TreeNode root) {
- if(root == null) {
- return;
- }
- dfs(root.left);
- count--;
- if(count == 0) {
- ret = root.val;
- return;
- }
- dfs(root.right);
- }

- List<String> ret;
-
- public List<String> binaryTreePaths(TreeNode root) {
- ret = new ArrayList<>();
- dfs(root, new StringBuffer());
- return ret;
- }
-
- public void dfs(TreeNode root, StringBuffer _path) {
- StringBuffer path = new StringBuffer(_path);
- path.append(Integer.toString(root.val));
- if (root.left == null && root.right == null) {
- ret.add(path.toString());
- return;
- }
- path.append("->");
- if (root.left != null) {
- dfs(root.left, path);
- }
- if (root.right != null)
- dfs(root.right, path);
- }